001package com.avaje.ebean.config.dbplatform; 002 003import com.avaje.ebean.dbmigration.ddlgeneration.platform.MsSqlServerDdl; 004 005import java.sql.Types; 006 007/** 008 * Microsoft SQL Server 2005 specific platform. 009 * <p> 010 * <ul> 011 * <li>supportsGetGeneratedKeys = true</li> 012 * <li>Uses LIMIT OFFSET clause</li> 013 * <li>Uses [ & ] for quoted identifiers</li> 014 * </ul> 015 * </p> 016 */ 017public class MsSqlServer2005Platform extends DatabasePlatform { 018 019 public MsSqlServer2005Platform() { 020 super(); 021 this.name = "mssqlserver2005"; 022 // effectively disable persistBatchOnCascade mode for SQL Server 023 // due to lack of support for getGeneratedKeys in batch mode 024 this.disallowBatchOnCascade = true; 025 this.idInExpandedForm = true; 026 this.selectCountWithAlias = true; 027 this.sqlLimiter = new MsSqlServer2005SqlLimiter(); 028 this.platformDdl = new MsSqlServerDdl(dbTypeMap, dbIdentity); 029 this.dbIdentity.setIdType(IdType.IDENTITY); 030 this.dbIdentity.setSupportsGetGeneratedKeys(true); 031 this.dbIdentity.setSupportsIdentity(true); 032 033 this.openQuote = "["; 034 this.closeQuote = "]"; 035 036 dbTypeMap.put(Types.BOOLEAN, new DbType("bit default 0")); 037 038 dbTypeMap.put(Types.INTEGER, new DbType("integer", false)); 039 dbTypeMap.put(Types.BIGINT, new DbType("numeric", 19)); 040 dbTypeMap.put(Types.REAL, new DbType("float(16)")); 041 dbTypeMap.put(Types.DOUBLE, new DbType("float(32)")); 042 dbTypeMap.put(Types.TINYINT, new DbType("smallint")); 043 dbTypeMap.put(Types.DECIMAL, new DbType("numeric", 28)); 044 045 dbTypeMap.put(Types.BLOB, new DbType("image")); 046 dbTypeMap.put(Types.CLOB, new DbType("text")); 047 dbTypeMap.put(Types.LONGVARBINARY, new DbType("image")); 048 dbTypeMap.put(Types.LONGVARCHAR, new DbType("text")); 049 050 dbTypeMap.put(Types.DATE, new DbType("date")); 051 dbTypeMap.put(Types.TIME, new DbType("time")); 052 dbTypeMap.put(Types.TIMESTAMP, new DbType("datetime2")); 053 054 } 055 056}