在Hibernate中,常量在数据库中被认为是CHAR类型的,Hibernate取值时将其保存为Character类型,而Character只能保存一个字符,所以造成返回值中只存在一个字符。Hibernate官方已存在此bug,却从未修复。
这建议的解决方案:
重写一个SQLServerDialect ,注册CHAR类型的对应方式,代码如下:
import java.sql.Types;
import org.hibernate.Hibernate;
public class MySQLServerDialect extends org.hibernate.dialect.SQLServerDialect
{
public MySQLServerDialect()
{
super();
//very important, mapping char(n) to String
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
}
}