我有一个部门表和一个雇员表。 dept 表与 emp 表与 deptId 存在一对多关系。
当我尝试这段代码时:
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 生成的查询中的重复呢?
请告知如何删除这些重复。
问候,
最佳答案
有一些解决方法:
- 您可以将项目添加到
HashSet
或LinkedHashSet
- 这将 删除重复项或 - 您可以尝试使用不同的获取模式。有关获取模式的详细信息,请参阅此链接 here - 我使用
SUBSELECT
取得了相当好的结果。
关于 hibernate : Repetition in FetchMode. 加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968179/