2012-06-10 60 views
3

我有一個dept表和一個emp表。 dept表與emp表w.r.t具有一對多的關係。休眠:重複在FetchMode.JOIN

,當我試圖驗證碼:

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

這是我的控制檯生成的輸出由Hibernate生成的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表的列中有重複。但我不想讓這些重複出現。如何避免在hibernate生成的查詢中重複呢?

請告知如何刪除這些重複。

問候,

+0

添加emp映射。看來你有公式 –

+0

目前還沒有辦法去除它們。他們來自協會映射。但你爲什麼在意? –

回答

2

有幾個解決方法,此:

  1. 您可以將您的資料轉移到HashSetLinkedHashSet - 這將 刪除重複或
  2. 您可以嘗試使用不同的獲取模式。請參閱此鏈接瞭解獲取模式的詳細信息。here - 使用SUBSELECT獲得了相當不錯的結果。