Ula*_*kar 1 java orm hibernate
这是我的情况:
我有两个实体,其中一对多关系映射为(仅给出相关部分):
<class name="xyz.Survey">
<list name="answers" inverse="true" lazy="true" fetch="select"
cascade="all-delete-orphan">
<key column="OPA_OP_ID" not-null="true" />
<list-index column="OPA_SORT_ORDER" />
<one-to-many class="xyz.Answer" />
</list>
</class>
<class name="xyz.Answer">
<many-to-one name="survey" class="xyz.Survey" fetch="select">
<column name="OPA_OP_ID" not-null="true" />
</many-to-one>
there is no mapping for column OPA_SORT_ORDER, I let Hibernate take care of that
</class>
我的问题是:我想对单个调查的答案执行HQL查询,我希望这些答案按OPA_SORT_ORDER排序.此查询不起作用:
select new AnswerDTO(a.id, a.answerText, 0) from Survey p join p.answers a where p.id = ?
在日志中,我可以看到此HQL生成的SQL查询中没有ORDER BY.我怎样才能做到这一点?我是否需要sortOrder向Answer实体添加属性?
不,你不需要添加属性,HQL有一个内置函数index:
select new AnswerDTO(a.id, a.answerText, 0)
from Survey p
join p.answers a
where p.id = ?
order by index(a)
Run Code Online (Sandbox Code Playgroud)