Hibernate 指定查询结果的数据类型
1.使用Hibernate中的addScalar(String arg,Type type)来自定义返回字段的类型,
如:
this.getSession().createSQLQuery("select id,name,state from table")
.addScalar("id", Hibernate.STRING)
.addScalar("name", Hibernate.STRING)
.addScalar("state", Hibernate.STRING
).list();
但是如果sql语句是这样的
"select t1.id,t1.name,t2.state from table1 t1,table2 t1 where ti.id=t2.id"
那么 在 addScalar 时就不能写成
.addScalar("t1.id",Hibernate.STRING);
不然会出现字段无效
而应该写成
.addScalar("id",Hibernate.STRING);
这种方法必须把所有要查询的字段进行定义,在字段比较多的时候,就相对比较麻烦;
2.在查询语句中直接指定数据格式,
如:
select id,name,cast(state as varchar(2)) from tb
这种解决方法比较方便