因此,如果我的JPA查询是这样的:从“父项”左侧选择不同的“ p”,然后按“ p.someProperty”获取“ p.children”的顺序
我正确地将结果按p.someProperty重新排序,并且正确地获取并填充了我的p.children集合。但是我想让查询类似于“按p.someProperty,p.children.someChildProperty排序”,以便每个父对象内部填充的集合由someChildProperty排序。
当我考虑针对这些调用实际生成的sql时,这似乎很直观,但是当它尝试映射回分层对象时,我想的就更少了。
要保留顺序,请使用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集合。