Hibernate如何映射SQL数据类型nvarchar(max)?

我的SQL-2005数据库中有一列曾经是 ,但已更改为 。

现在,我需要更新我的hibernate映射文件以反映更改,这就是它过去的样子:

当我尝试运行该应用程序时,出现以下错误:

org.hibernate.HibernateException:[表]中列值的列类型错误。找到:ntext,预期:文本

我应该在’type’属性中添加什么以将列正确映射为 ?

我尝试将类型设置为 ntext ,但是hibernate不知道那是什么。我尝试将类型设置为 string ,但将 string 视为 文本 类型。

回答:

在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 code, int length, int precision, int scale) throws HibernateException {

if(code != 2005) {

return super.getTypeName(code, length, precision, scale);

} else {

return "ntext";

}

}

}

此类将Hibernate的类型映射为SQL类型,因此该类会将 SQL数据类型映射 为Hibernate的 数据类型。

方法被用来当Hibernate询问与2005码(看起来像它的数据类型为nvarchar(max)数据类型)的数据类型返回“NTEXT”。

最后,您需要将hibernate持久性方言更改为这个新的SQLServerDialect类,该类允许hibernate将数据类型转换为SQL数据类型。

以上是 Hibernate如何映射SQL数据类型nvarchar(max)? 的全部内容, 来源链接: utcz.com/qa/414568.html

回到顶部