私は持っている
Class A{
List <B> bList
}
Class B {
String name;
}
ここで、Hibrnate 基準 API を使用してクエリを作成したいので、B pojo のみを持つフィルタリングされた bList プロパティを持つ A pojo のみを取得します。
where "b.name" == 'abc'
私は持っている
Class A{
List <B> bList
}
Class B {
String name;
}
ここで、Hibrnate 基準 API を使用してクエリを作成したいので、B pojo のみを持つフィルタリングされた bList プロパティを持つ A pojo のみを取得します。
where "b.name" == 'abc'
これは非常に危険な行為です。Hibernate ではサポートされていますが、JPA ではサポートされていません。これがロードするエンティティは、データベースに格納されているものの現実を反映していないためです。B のリストを変更した場合、Hibernate は A にバロングするすべての B を削除する可能性がありますが、クエリによってロードされていません。
つまり、これはフェッチ モードを使用した単純な内部結合です。
Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.b", "b");
c.add(Restrictions.eq("b.name", "abc");
c.setFetchMode("a.b", FetchMode.JOIN);