【发布时间】:2017-02-24 23:16:12
【问题描述】:
所以我们有 2 个对象,每个对象都映射到一个 db 表。
public class Dispute {
private Long disputeSeqNo;
private List<StatusInfo> statusInfos;
}
public class StatusInfo {
private Long statusSeqNo;
private Date createdDt;
private String statusCd;
private Dispute dispute;
}
一个 Dispute 可以有 0 个或多个 StatusInfo 与之关联。
目前,hibernate 正在为每个 Dispute 返回所有 StatusInfo 对象。虽然在某些情况下这是需要的。但是我有一个用例:
- 我只需要显示每个 Dispute 的最新 StatusInfo。
- 此外,在同一显示器上,我需要能够按最新的 StatusInfo.statusCd 值进行排序。这种排序需要在数据库中进行,因为我的显示是分页的(使用休眠分页工具)。 (确实不能在检索后对数据进行排序,因为会有很多行数据。)
我知道只使用普通 SQL 我可以做到这一点,但很难将其转换为 HQL。
关于如何使用 HQL 解决此问题的任何想法?我还能回来的地方:
List<Dispute>
感谢您的反馈。
谢谢!
【问题讨论】:
-
请添加适合您情况的 sql 查询
-
你不能。争议的状态信息是争议的状态信息。他们全部。这不取决于您从数据库中获取争议的方式。如果您想要争议的最新状态信息,您需要一个选择状态信息的查询。类似
select dispute, statusInfo from Dispute d join d.statusInfos statusInfo where...。