在JPA查询中排序返回Child对象
因此,如果我的JPA查询是这样的:从父p中选择不同的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集合。
阿黛尔基本上已经钉了这个。 如果您的集合多次包含同一个实体,您也可以使用那些可能很重要的List。
- 从EnitityManager获取所有映射的实体
- 什么是@JoinColumn以及如何在Hibernate中使用它
- 有没有帮助知道Hibernate是否已经加载了一个属性?
- 使用hibernate更新数据库模式
- Spring Data配置 – 找不到hibernate.properties
- 无法打开JPA EntityManager进行交易; 嵌套exception是java.lang.IllegalStateException
- hibernate。 ClassicQueryTranslatorFactory与ASTQueryTranslatorFactory
- Hibernate:Hibernate总是使用对象代理吗?
- JPA主键自动生成