您的位置:首页 > 移动开发

org.hibernate.MappingException: No Dialect mapping for JDBC type: -15的解决方法

2015-12-04 22:57 561 查看
org.hibernate.MappingException: No Dialect mapping for JDBC type: -15的原因和解决方法(注意:是在struts2和hibernate框架下写sql查询语句的时候出现的错误):

1、如果比如查询语句是"select *"形式的,要在执行查询的时候在后面加上addEntity(类名.class),用来指明该查询语句所对应的实体类,不然它不知道从哪里去查询;

比如:

String sql="select * from MaintenanceTemplate where State=1";

getSession().beginTransaction();

Query queryObject = getSession().createSQLQuery(sql)

.addEntity(MaintenanceTemplate.class)

.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

List resultlist = queryObject.list();

getSession().getTransaction().commit();

2、如果比如查询语句是“select 表名.字段名 as 别名” 形式的,那么就要在执行查询的时候在后面加上addScalar("别名",Hibernate.字段类型),用来指明该查询语句查询的字段类型;

比如:

String queryString = "select b.EquipmentNo as equipNumber,"

+ " a.PointName as signalName,"
+ " from WsignalInfo a, WequipmentResume b"

+ " where a.EerId=b.EerId ";

getSession().beginTransaction();

Query queryObject = getSession().createSQLQuery(queryString)

.addScalar("equipNumber",Hibernate.INTEGER)

.addScalar("signalName",Hibernate.STRING)

.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

queryObject.setFirstResult(start);

queryObject.setMaxResults(limit);

List resultlist = queryObject.list();

getSession().getTransaction().commit();

3、如果比如要求查询返回结果的类型是map类型的,那么就要在执行查询的时候在后面加上setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP),用来指明查询结果要转换成map类型的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: