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();
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,"
+ " 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();
+ " 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类型的。