(オプションで) 関連付けられたオブジェクトの属性で並べ替えて、Hibernate データセットを並べ替えようとしています。私は関連付けによる休止状態の順序の例に従いました-そしてそれはある程度機能します。関連付けられたオブジェクトがない場合に問題が発生し、レコード全体が無視されます。
オブジェクトの関連タイプを外部結合に変更すると、問題が解決しますか? もしそうなら、誰かが私に正しい指示を向けてもらえますか?
どうもありがとう。
(オプションで) 関連付けられたオブジェクトの属性で並べ替えて、Hibernate データセットを並べ替えようとしています。私は関連付けによる休止状態の順序の例に従いました-そしてそれはある程度機能します。関連付けられたオブジェクトがない場合に問題が発生し、レコード全体が無視されます。
オブジェクトの関連タイプを外部結合に変更すると、問題が解決しますか? もしそうなら、誰かが私に正しい指示を向けてもらえますか?
どうもありがとう。
コードを 1 行変更するだけで問題を解決できました。Criteria オブジェクトを作成するときに、パラメーター JoinFragment.LEFT_OUTER_JOIN を渡すことができました。例えば:
Criteria subCriteria = criteria.createCriteria(subTypeName, JoinFragment.LEFT_OUTER_JOIN);
参照されている質問は基準クエリを使用しているため、それらの回答が必要なのか、それとも HQL だけが必要なのかわかりません。次のようなエンティティがある場合、HQL は問題ないと仮定します。
class EntityA {
private Long id;
@OneToMany
private EntityB b;
....
}
class EntityB {
private Long id;
private String name;
}
EntityA と EntityB の間にオプションの OneToMany 関係がある場合、次のようなクエリを使用できるはずです。
"SELECT obj FROM " + EntityA.class.getName() + " obj LEFT JOIN obj.b obj2 ORDER BY obj2.name";
フィールドごとに並べ替えて、存在する場所とEntityA
結合されたすべてを選択する場所。EntityB
EntityB.name