关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题

今天在使用getSession().createSQLQuery("SELECT SUM(aloneIp) FROM table").list();
时出现了错误:No Dialect mapping for JDBC type: 3;

baidu,google了一番后,各位都说:“出现这个原因是说服务器端的数据类型并不能和Java的BigDecimal数据类型成功映射。”;

 

而我自己遇到的是报错9 :

但是我没用上面的方法。

我只是规定返回值的类型就可以了。

public List topCataList(int catalevel){
     Session session = getSession();
     List list = new ArrayList();
     String sql = "select TUSHU_DAIMA from Magazine_Cata where CATA_LEVEL = :level";
     try {
  Query query = session.createSQLQuery(sql).addScalar("TUSHU_DAIMA", Hibernate.STRING);
  query.setInteger("level", catalevel);
  list = query.list();
     } catch (HibernateException e) {
  e.printStackTrace();
     }
     
     return list;
     
 }

注意红色的部分。

注意:这只是别人的观点,具体的这个问题的原因就是数据库的表中的字段的类型,和实体类中的字段的类型不匹配。

注意修改一下实体类或者是数据库的字段类型就行了,上面只是一种的解决办法,还有许多的解决办法。

posted @ 2017-02-27 17:40  ssc在路上  阅读(289)  评论(0)    收藏  举报