在Tremend Tech
Blog上找到了答案。您必须编写自己的SQLServerDialect类,它看起来像这样:
public class SQLServerNativeDialect extends SQLServerDialect { public SQLServerNativeDialect() { super(); registerColumnType(Types.VARCHAR, "nvarchar($l)"); registerColumnType(Types.CLOB, "nvarchar(max)"); } public String getTypeName(int pre, int length, int precision, int scale) throws HibernateException { if(pre != 2005) { return super.getTypeName(pre, length, precision, scale); } else { return "ntext"; } }}此类将Hibernate的类型映射为SQL类型,因此该类会将 nvarchar(max) SQL数据类型映射 为Hibernate的
CLOB 数据类型。
该 getTypeName
方法被用来当Hibernate询问与2005码(看起来像它的数据类型为nvarchar(max)数据类型)的数据类型返回“NTEXT”。
最后,您需要将hibernate持久性方言更改为这个新的SQLServerDialect类,该类允许hibernate将数据类型转换为SQL数据类型。



