0

私は持っている

Class A{
  List <B> bList

}

Class B {
 String name;

}

ここで、Hibrnate 基準 API を使用してクエリを作成したいので、B pojo のみを持つフィルタリングされた bList プロパティを持つ A pojo のみを取得します。

 where "b.name"  == 'abc'
4

2 に答える 2

5

これは非常に危険な行為です。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);
于 2012-02-06T22:05:31.980 に答える