用hibernate直接执行原生sql的查询,报错No Dialect mapping for JDBC type :-9。
在这里记录下,方便以后遇到同样的问题可以快速解决。
报错的代码如下:
String sql = "SELECT DIM_VALUE_FULL FROM DIMENSION_CALLREASON WHERE ID IN (:analyzeIds) ";
Query query = session.createSQLQuery(sql);
query.setParameterList("analyzeIds", analyzeIds);
list = query.list();
报错原因:返回的服务器端的DIM_VALUE_FULL数据类型并不能和Java中的数据类型成功映射。
解决方法:规定返回值的类型。
修正后的代码如下:
String sql = "SELECT DIM_VALUE_FULL FROM DIMENSION_CALLREASON WHERE ID IN (:analyzeIds) ";
Query query = session.createSQLQuery(sql).addScalar("DIM_VALUE_FULL", StandardBasicTypes.STRING);
query.setParameterList("analyzeIds", analyzeIds);
list = query.list();