一尘不染

JPA查询中子对象的排序返回

hibernate

因此,如果我的JPA查询是这样的:从“父项”左侧选择不同的“ p”,然后按“ p.someProperty”获取“ p.children”的顺序

我正确地将结果按p.someProperty重新排序,并且正确地获取并填充了我的p.children集合。但是我想让查询类似于“按p.someProperty,p.children.someChildProperty排序”,以便每个父对象内部填充的集合由someChildProperty排序。

当我考虑针对这些调用实际生成的sql时,这似乎很直观,但是当它尝试映射回分层对象时,我想的就更少了。


阅读 482

收藏
2020-06-20

共1个答案

一尘不染

要保留顺序,请使用TreeSet。就父内部的集合排序而言,只需使用Comparator在代码中进行即可。

好吧,在父实体类中的集合定义上尝试一下。我希望你明白我的意思。

您可以使用此JPA批注,

@javax.persistence.OrderBy(value = "fieldName")

或特定于hibernate的

@org.hibernate.annotations.OrderBy(clause = "FIELD_NAME asc")

你也可以用这个

@org.hibernate.annotations.Sort(type = SortType.NATURAL)

要么

@org.hibernate.annotations.Sort(type = SortType.COMPARATOR)

对于比较器,必须有一个比较器。其他可能仅适用于String集合。

2020-06-20