gpt4 book ai didi

java - 如何在 HQL 查询中按列表索引排序?

转载 作者:行者123 更新时间:2023-11-29 08:17:52 25 4
gpt4 key购买 nike

这是我遇到的情况:
我有两个具有一对多关系映射的实体(只给出了相关部分):

    <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 awhere 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)

关于java - 如何在 HQL 查询中按列表索引排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com