質問
したがって、JPAクエリが次のような場合: 親から個別のpを選択します。p.somePropertyによるp.childrenの順序を取得します。
p.somePropertyによって結果の順序を正しく戻し、p.childrenコレクションを熱心にフェッチしてデータを取得します。しかし、「quot by p.someProperty、p.children.someChildProperty」のようなクエリを作成したいと思います。各親オブジェクト内に配置されたコレクションがsomeChildPropertyによってサブオーダーされるように。
これらの呼び出しに対して実際に生成されるsqlの観点から考えると、これは直感的に思えますが、階層オブジェクトにマップし直そうとするときはそうではないと思います。
解決
順序を維持するには、 TreeSet を使用します。親内でのコレクションのソートに関する限り、コンパレータ。
さて、親エンティティクラスのコレクション定義でこれを試してください。あなたが私のポイントを得ていることを願っています。
この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コレクションでのみ機能する場合があります。
他のヒント
Adeelには基本的にこれが組み込まれています。コレクションに同じエンティティが複数回含まれている場合に重要になる可能性のあるリストを使用することもできます。
所属していません StackOverflow