我的项目是SSH架构的
在hibernate的一对多查询中
一表:item 多表:subitem 我想查item的时候也把subitem也都查出来 ,所以我的hql语句这么写的:
String hql = "FROM Item AS i left join fetch i.subitems order by i.itemid asc";
List list = super.getSession().createQuery(hql).list();
我想在把item用itemid去排序,可是在Eclipse中拼出来的sql语句没有加上order by i.itemid的排序,而是用我配置文件中(item.hbm.xml)中的排序 Eclipse中拼的sql是这样的:
Hibernate: select item0_.itemid as itemid0_, subitems1_.subid as subid1_, item0_.itemname as itemname6_0_, item0_.itemcode as itemcode6_0_, subitems1_.subname as subname7_1_, subitems1_.subcode as subcode7_1_, subitems1_.itemid as itemid7_1_, subitems1_.itemid as itemid0__, subitems1_.subid as subid0__ from item item0_ left outer join subitem subitems1_ on item0_.itemid=subitems1_.itemid order by subitems1_.subcode(为什么没有把我HQL中的order-by加上) 我的item.hbm.xml中关于subitem的配置
<set name="subitems" table="subitem" inverse="true" cascade="all" order-by="subcode">
<key>
<column name="itemid"> </column>
</key>
<one-to-many class="org.zwx.myznt.vo.Subitem" />
</set>
归根结底,item.hbm.xml中 <set order-by>和我hql中的order by到底哪个优先级更高
我要是想给item排序该怎么办,前提是还要在 <set>中按subcode排序
跪求帮忙,不胜感激
在hibernate的一对多查询中
一表:item 多表:subitem 我想查item的时候也把subitem也都查出来 ,所以我的hql语句这么写的:
String hql = "FROM Item AS i left join fetch i.subitems order by i.itemid asc";
List list = super.getSession().createQuery(hql).list();
我想在把item用itemid去排序,可是在Eclipse中拼出来的sql语句没有加上order by i.itemid的排序,而是用我配置文件中(item.hbm.xml)中的排序 Eclipse中拼的sql是这样的:
Hibernate: select item0_.itemid as itemid0_, subitems1_.subid as subid1_, item0_.itemname as itemname6_0_, item0_.itemcode as itemcode6_0_, subitems1_.subname as subname7_1_, subitems1_.subcode as subcode7_1_, subitems1_.itemid as itemid7_1_, subitems1_.itemid as itemid0__, subitems1_.subid as subid0__ from item item0_ left outer join subitem subitems1_ on item0_.itemid=subitems1_.itemid order by subitems1_.subcode(为什么没有把我HQL中的order-by加上) 我的item.hbm.xml中关于subitem的配置
<set name="subitems" table="subitem" inverse="true" cascade="all" order-by="subcode">
<key>
<column name="itemid"> </column>
</key>
<one-to-many class="org.zwx.myznt.vo.Subitem" />
</set>
归根结底,item.hbm.xml中 <set order-by>和我hql中的order by到底哪个优先级更高
我要是想给item排序该怎么办,前提是还要在 <set>中按subcode排序
跪求帮忙,不胜感激
比如你拼装了hql,但是最终要转换成标准的sql,就要根据配置文件,这个时候配置文件的subcode起作用了。至于优先级,没测试过,等楼下回答吧。
我的hibernate版本是3.2.2.ga
测试数据如下:
<set name="cardRecords" table="CardRecord" inverse="true" order-by="cardRecordId">
<key>
<column name="personCode" />
</key>
<one-to-many class="com.lan.adms.domain.CardRecord" />
</set>
Iterator<Person> persons = session.createQuery("from Person p left join fetch p.cardRecords order by p.personID asc").list().iterator();
结果如下
Hibernate: select person0_.personID as personID1_0_, ...... order by person0_.personID asc, cardrecord1_.cardRecordId
或许是版本问题
会不会是版本问题呢
我自己配了个Hibernate环境测试了一下,和你的结果是一样,可是我的项目在SSH中,出来的结果就是上面的样子
会生成order by subitems1_.itemid,subitems1_.subcode
刚才我试了你的第二种,写出order-by="itemid,subcode",这样就可以了 ,谢谢
不过我还是想问一下 ,为什么光测试hibernate的时候,和3楼楼主说的一样,而到我项目里就不行了呢