org.hibernate.util.JDBCExceptionReporter - SQL Error: 17006, SQLState: null... 列名无效.could not exe...

2018-07-23 15:19:02,374 [http-bio-8080-exec-9] WARN  org.hibernate.util.JDBCExceptionReporter - SQL Error: 17006, SQLState: null
2018-07-23 15:19:02,374 [http-bio-8080-exec-9] ERROR org.hibernate.util.JDBCExceptionReporter - 列名无效
2018-07-23 15:19:02,375 [http-bio-8080-exec-9] ERROR com.css.login.LocalUserLogin - could not execute query
org.hibernate.exception.GenericJDBCException: could not execute query

新发现的一个bug,刚开始以为是缺少字段,但是把执行的SQL放在plsql执行之后,没问题 ,成功查出,但是java代码中执行的时候就是不行,后来网上查了下,原因存在两种,

1.在用数组接收查询结果集合的时候,只查询了一个字段,在查询字段再加一个字段或者换成“*”即可解决问题;

原SQL:select 字段1 from 表名;

改过之后SQL:select 字段1,字段2 from 表名;

或者select * from 表名;

 

2.HIbernate 获取集合的时候指定了错误的字段名称:

sb.append("SELECT  A.字段1  as 别名1  FROM 表A");

 SQLQuery query = HibernateUtil.currentSession().createSQLQuery(sb.toString());
 List<String>   wyList = (List<String>) query.addScalar("name", Hibernate.STRING).list();

 

将name改为别名1即可


版权声明:本文为xiachaoyang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。