Hibernate:FetchMode.JOIN中的重复

时间:2012-06-10 11:08:29

标签: hibernate criteria criteria-api hibernate-criteria

我有一个dept表和一个emp表。 dept表与emp表有一对多的关系。

当我尝试这段代码时:

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生成的查询中重复呢?

请告知如何删除这些重复。

此致

1 个答案:

答案 0 :(得分:2)

有一些解决方法:

  1. 您可以将商品添加到HashSetLinkedHashSet - 这将是 删除重复项或
  2. 您可以尝试使用其他获取模式。有关获取模式here的详细信息,请参阅此链接 - 我使用SUBSELECT获得了不错的结果。