2

我在 Hibernate 中有一个要查询的类 Video,并且我按Order.desc("id"). 查询按预期工作。但是,如果我@OneToMany在 Video 中添加注释以包含评论,我也会在@OrderBy同一注释中添加一个(我需要评论是ordered by "createdTime")。

@OneToMany(fetch = FetchType.LAZY, mappedBy = "videoId", cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("commentTime")
public List<Comment> getComments()

这打破了主要查询 - 视频的返回现在是错误的:它命令 SQL 首先返回没有评论的视频,然后是 1 条评论,等等:

order by comments6_.commentTime asc, this_.videoId desc

我只需要按他们的 ID 对视频进行排序。

4

1 回答 1

4

尝试@Sort改用:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "videoId", cascade = CascadeType.ALL, orphanRemoval = true)
@Sort(type = SortType.COMPARATOR, comparator = CommentTimeComparator.class)
public List<Comment> getComments()

这样你就知道它不会影响你的 SQL。它还可以通过减轻数据库的压力来提高性能 - 例如,如果您@OneToMany在要排序的同一实体上有多个关联。

于 2013-01-08T14:26:28.550 回答