3

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

当我尝试这段代码时:

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(+)

在生成的休眠查询中,我可以清楚地看到 emp 表的列中存在重复。但我不希望出现这些重复。那么如何避免hibernate生成的查询中的重复呢?

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

问候,

4

1 回答 1

2

有一些解决方法:

  1. 您可以将您的项目添加到HashSetLinkedHashSet- 这将删除重复项或
  2. 您可以尝试使用不同的获取模式。有关此处获取模式的详细信息,请参阅此链接- 我使用SUBSELECT.
于 2012-09-19T19:38:27.417 回答