参考了http://www.iteye.com/topic/580476的文章,解决问题。
在此记录一下:
import java.sql.Types; import org.hibernate.Hibernate; import org.hibernate.dialect.SQLServerDialect; public class SqlServer2008Dialect extends SQLServerDialect { public SqlServer2008Dialect() { super(); registerHibernateType(Types.CHAR, Hibernate.STRING.getName()); registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName()); registerHibernateType(Types.LONGNVARCHAR, Hibernate.STRING.getName()); registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName()); } }
<property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> com.***.***.***.util.SqlServer2008Dialect </prop> </props> </property>
类型名称 | 显示长度 | 数据库类型 | JAVA类型 | JDBC类型(int) | Types属性 |
VARCHAR | L+N | VARCHAR | java.lang.String | 12 | Types.VARCHAR |
CHAR | N | CHAR | java.lang.String | 1 | Types.CHAR |
BLOB | L+N | BLOB | java.lang.byte[] | -4 | Types.LONGVARBINARY |
TEXT | 65535 | VARCHAR | java.lang.String | -1 | Types.LONGVARCHAR |
INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 | Types.INTEGER |
TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 | Types.TINYINT |
SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 | Types.SMALLINT |
MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 | Types.INTEGER |
BIT | 1 | BIT | java.lang.Boolean | -7 | Types.BIT |
BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 | Types.BIGINT |
FLOAT | 4+8 | FLOAT | java.lang.Float | 7 | Types.REAL |
DOUBLE | 22 | DOUBLE | java.lang.Double | 8 | Types.DOUBLE |
DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 | Types.DECIMAL |
BOOLEAN | 1 | 同TINYINT | java.lang.Integer | -6 | Types.TINYINT |
DATE | 10 | DATE | java.sql.Date | 91 | Types.DATE |
TIME | 8 | TIME | java.sql.Time | 92 | Types.TIME |
DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 | Types.TIMESTAMP |
TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 | Types.TIMESTAMP |
YEAR | 4 | YEAR | java.sql.Date | 91 | Types.DATE |