有关SQLServer中varchar和nvarchar的区别可以直接去google。一般在中文系统中应该使用nvarchar作为字符串的对应类型,但是Hibernate中的默认实现SQLServerDialect使用了varchar。以下方法可以简单地转为使用nvarchar:
自己写一个dialect,继承SQLServerDialect,在构造器中将原先varchar类型的注册声明覆盖:
registerColumnType(Types.VARCHAR, "nvarchar($l)");
千万注意,“$”后面的是字段长度的占位符,是“l(ength)”,而不是数字“1”(因为看hibernate的doc时没分清“l”和“1”,浪费了我一上午去找原因)
然后在hibernate的配置文件中将hibernate.dialect的值设为你的dialect实现类就OK了
-- EOF --
除非注明(如“转载”、“[zz]”等),本博文章皆为原创内容,转载时请注明: 「转载自程序员的信仰©」
本文链接地址:如何在Hibernate中让SQLServer使用nvarchar代替varchar
Today on history:
【2011】在Ubuntu下配置L2TP
发表回复