HIbernate返回重复或未压缩的对象

时间:2015-09-13 01:01:51

标签: hibernate hibernate-mapping hibernate-criteria

我有两个具有oneToMany关系的实体。

例: CollegeEntity collegeId, 设置学生(OneToMany,fetchType.EAGER)

StudentEntity 学生卡 大学(ManyToOne)

当我使用hibernates为大学查询数据库时,它返回了我对collegeEntity的记录,其中n是学生数。

我期待查询的结果是大学实体的1条记录,其大小为" n"对于学生。

我正在使用Hibernate - 3.6。我的查询在标准hibernate中使用CollegeId来获取这些记录。请指导我做错了什么。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我发现了这个问题。这是因为获取策略而发生的。它应该是学生在大学实体中的LAZY获取策略。

CollegeEntity collegeId,Set students(OneToMany,fetchType.LAZY)

答案 1 :(得分:0)

通常,当您从查询的基本实体获取重复行时,这是因为您追加到该查询的连接。

避免此行为的一种方法是对查询使用DISTINT子句,该子句将删除结果的所有重复行。使用DISTINT的标准可能非常棘手,我建议你阅读标准投影不同,这是你需要的

特别是使用Hibernate时,很难确定这些重复行的原因,因此如果您发现自己处于这种情况,则应启用生成的SQL日志,然后找到问题的根源。