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