我有两个具有oneToMany关系的实体。
例: CollegeEntity collegeId, 设置学生(OneToMany,fetchType.EAGER)
StudentEntity 学生卡 大学(ManyToOne)
当我使用hibernates为大学查询数据库时,它返回了我对collegeEntity的记录,其中n是学生数。
我期待查询的结果是大学实体的1条记录,其大小为" n"对于学生。
我正在使用Hibernate - 3.6。我的查询在标准hibernate中使用CollegeId来获取这些记录。请指导我做错了什么。
提前致谢!
答案 0 :(得分:1)
我发现了这个问题。这是因为获取策略而发生的。它应该是学生在大学实体中的LAZY获取策略。
CollegeEntity collegeId,Set students(OneToMany,fetchType.LAZY)
答案 1 :(得分:0)
通常,当您从查询的基本实体获取重复行时,这是因为您追加到该查询的连接。
避免此行为的一种方法是对查询使用DISTINT子句,该子句将删除结果的所有重复行。使用DISTINT的标准可能非常棘手,我建议你阅读标准投影不同,这是你需要的
特别是使用Hibernate时,很难确定这些重复行的原因,因此如果您发现自己处于这种情况,则应启用生成的SQL日志,然后找到问题的根源。