0

私は3つのテーブルを持っています。マスター、チャイルド1、チャイルド2。

マスターはchild1と1対多の関係を持っています。

マスターはchild2と1対多の関係を持っています。

child1とchild2の間に関係はありません。

hibernateを使用して、1つのクエリで3つのテーブルすべてからデータを取得したいと思います。

Table - Master
   id    
   11
   12

Table - child1
   id    deposited_date      Master_child1_reltion_key
   2     2012-10-10                   11
   3     2012-10-10                   11
   4     2012-10-10                   11
   5     2011-01-01                   12
   6     2005-02-20                   13


Table - child2   
   id    phoneNo      phone_type        master_child2_relation_key
   15    1111111      personal              11
   16    2222222      office                11 
   17    3333333      home                  11 
   18    1010100      personal              12  

テーブルchild2には、マスターテーブルに対してレコードがない、1、2、または3つ存在する可能性があります。

3つのテーブルすべてから値を取得したかったのです。お気に入り

  id     deposited_date    phoneno1     phoneno2     phoneno3
  11       2012-10-10      1111111      2222222       3333333
  12       2011-01-01      1010100
  13       2005-02-20 

Hibernateで単一のクエリを使用してデータを取得することは可能ですか、それとも複数のクエリを使用する必要がありますか?

4

2 に答える 2

1

Select master from master master left join fetch master.child1 left join fetch master.child2

これにより、master がルートとして 2 つの子のリストが取り込まれますか?

への懸念として、私はあなたがどのようにして存在しないのid=13か理解できませんでした。FKmaster

于 2012-08-18T06:20:26.553 に答える
1

次のように、Criteria を使用して 3 つのテーブルすべてからデータを取得できます。

Criteria crit = session.createCriteria(Master.class);
crit.setFetchMode("child1", FetchMode.JOIN);
crit.setFetchMode("child2", FetchMode.JOIN);
crit.setResultTransformer(criteria.DISTINCT_ROOT_ENTITY);
List<Master> masters = crit.list();

ここでmastersは、関連付けられた child1 および child2 エンティティを持つマスターのリストになります。

于 2012-08-18T06:22:27.970 に答える