3

dept テーブルと emp テーブルがあります。dept テーブルには、deptId に関して emp テーブルと 1 対多の関係がありました。

このコードを試したとき:

session.createCriteria(Dept.class).setFetchMode("empMap", FetchMode.JOIN)
       .list();

これは、休止状態によって生成された SQL クエリに対してコンソールに生成された出力です。

select this_.DEPT_ID as DEPT1_1_1_, this_.DEPT_NAME as DEPT2_1_1_, 
empmap2_.DEPT_ID as DEPT3_3_, empmap2_.EMP_ID as EMP1_3_, 
empmap2_.EMP_ID as formula0_3_, empmap2_.EMP_ID as EMP1_0_0_, 
empmap2_.EMP_NAME as EMP2_0_0_, empmap2_.DEPT_ID as DEPT3_0_0_, 
empmap2_.AGE as AGE0_0_, empmap2_.SEX as SEX0_0_ 
from dept this_, emp empmap2_ 
where this_.DEPT_ID=empmap2_.DEPT_ID(+)

生成された hibernate クエリでは、emp テーブルの列に繰り返しがあることがはっきりとわかります。しかし、私はこれらの繰り返しを表示したくありません。休止状態で生成されたクエリでの繰り返しを回避するにはどうすればよいですか?

これらの繰り返しを削除する方法を教えてください。

よろしく、

4

1 に答える 1

2

これにはいくつかの回避策があります。

  1. HashSetアイテムをまたはに追加できますLinkedHashSet-これにより、重複または
  2. 別のフェッチ モードを使用してみることができます。ここでフェッチモードの詳細については、このリンクを参照してください- を使用してかなり良い結果が得られましたSUBSELECT
于 2012-09-19T19:38:27.417 に答える