【发布时间】:2012-12-22 09:09:40
【问题描述】:
我在 Hibernate 中有一个要查询的类视频,我按 Order.desc("id") 对结果进行排序。
查询按预期工作。但是,如果我在 Video 中添加 @OneToMany 注释以包含 cmets,我还会在同一注释中添加 @OrderBy(我需要 cmets 为 ordered by "createdTime")。
@OneToMany(fetch = FetchType.LAZY, mappedBy = "videoId", cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("commentTime")
public List<Comment> getComments()
这破坏了主查询 - 现在返回视频是错误的:它命令 SQL 首先返回没有 cmets 的视频,然后是 1 条评论,等等:
order by comments6_.commentTime asc, this_.videoId desc
我只需要按 id 对视频进行排序。
【问题讨论】:
-
也许值得使用 Hibernate 的
@Sort,而不是在检索数据后在内存中执行排序?不过,您需要为此提供Comparator。至少这样你就知道它不会影响你的 SQL。
标签: hibernate one-to-many hibernate-annotations hibernate-onetomany