我有一个我在Hibernate中查询的视频类,我按Order.desc("id")
排序结果。
查询按预期工作。但是,如果我在视频中添加@OneToMany
注释以包含注释,我还会在同一注释中添加@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对视频进行排序。
答案 0 :(得分: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
关联,则需要进行排序。