今天使用Hibernate原生态的SQL语句查询SQL Server2008数据库,出现org.hibernate.MappingException:No Dialect mapping for JDBC type: -9。

查找-9对应的是NVARCHAR类型。查看Hibernate的SQLServer方言,好像没有类似的注册,那就加一个呗。参考网上资料,可以怎么做:

新建一个类MySQLServerDialect,继承SQLServer2008Dialect,

public class MySQLServerDialect extends SQLServer2008Dialect{
public MySQLServerDialect() {
super();
registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());
}
}

Hibernate类已经没有此STRING常量了,翻找Hibernate的几个包,发现可以registerHibernateType(Types.NVARCHAR, StringType.INSTANCE.getName());

这样没有报错了。

实际简单点registerHibernateType(Types.NVARCHAR, "string")也可以啦。

更多相关文章

  1. 【Effective Java】条30:使用枚举代替int常量

随机推荐

  1. Android中的自定义主题和样式
  2. 在Android中如何让gif动起来
  3. 设置 TextView 文字居中
  4. Android(安卓)NDK开发:HelloNDK
  5. android 和 lucene
  6. [android]布局(容器)简介和使用方法
  7. Android(安卓)列表按照时间排序
  8. android按屏幕大小动态确定控件位置及大
  9. android中如何处理cookie
  10. android 静音与振动