在使用hibernate时,想通过原生sql获取结果集,但是却报错:
org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
原因:
为查询的结果列为nvarchar2类型,而hibernate框架方言dialect是没有nvarchar2类型的映射的,无法将查询结果映射成具体的Java类型,所以在获取结果集时报错;
解决方案:
1.更改数据库字段类型为varchar2,自动映射成String类型;
2.使用addScalar(String columnAlias, Type type)方法,单独设置字段映射量:
String sql = " select distinct(ITEM_NAME) from evform_items where item_type=? ";
session().createSQLQuery(sql).addScalar("ITEM_NAME",StandardBasicTypes.STRING).setString(0, type).list();