日期:2014-05-17  浏览次数:20768 次

Hibernate 查询SQL的问题
String sql = "select {b.*} from (select distinct t.*, rownum rn\n"
  + " from bsec_unit_para t where rownum <= 10" 
  + condition
+ " order by t.unitcode) b\n" + " where b.rn >= 1";

假设给的条件condition 可以查出结果集为2条,
则用
getSession().createSQLQuery(sql).addEntity("b",BsecUnitPara.class).list();
返回2条相同记录,


getSession().createSQLQuery(sql).list();
不加类的类型转换就返回2条不同的正常的结果集。

为什么?必须要转换为类才能正常显示出来。。

------解决方案--------------------
HQL是有实体对应的,是有类型对应的
sql是有对应数据,是不管类型的
------解决方案--------------------
你select的是b.*是b对象的所有字段吧?这样返回来的是数组列表,就是由数组组成的list,每个数组放着b的所有字段值。。。。你直接select b 就好了,这样就返回list<b类型>