HIbernate 返回重复或未压缩的对象
HIbernate returning duplicate or uncompressed objects
我有两个具有 oneToMany 关系的实体。
例如:
大学实体
学院编号,
设置学生 (OneToMany, fetchType.EAGER)
学生实体
student_Id
大学(多对一)
当我使用 hibernates 查询大学的数据库时,它返回 collegeEntity 的 n 条记录,其中 n 是学生人数。
我希望查询结果是 collegeEntity 的 1 条记录,学生的大小为 "n"。
我正在使用 Hibernate - 3.6。我的查询在标准休眠中使用 CollegeId 来获取这些记录。请指导我做错了什么。
提前致谢!
通常,当您从查询的基本实体中获取重复的行时,这是因为您附加到该查询的联接。
避免这种行为的一种方法是在查询中使用 DISTINT 子句,这将删除结果中所有重复的行。使用 DISTINT 的标准可能会非常棘手,我建议您阅读不同的标准投影,这是您需要的
特别是使用 Hibernate 时,很难确定这些重复行的原因,所以如果您发现自己处于这种情况,您应该启用生成的 SQL 日志,然后找到问题的根源.
我发现了问题。这是因为获取策略而发生的。应该是学生大学实体中的LAZY fetch策略。
CollegeEntity collegeId, 设置学生(OneToMany, fetchType.LAZY)
我有两个具有 oneToMany 关系的实体。
例如: 大学实体 学院编号, 设置学生 (OneToMany, fetchType.EAGER)
学生实体 student_Id 大学(多对一)
当我使用 hibernates 查询大学的数据库时,它返回 collegeEntity 的 n 条记录,其中 n 是学生人数。
我希望查询结果是 collegeEntity 的 1 条记录,学生的大小为 "n"。
我正在使用 Hibernate - 3.6。我的查询在标准休眠中使用 CollegeId 来获取这些记录。请指导我做错了什么。
提前致谢!
通常,当您从查询的基本实体中获取重复的行时,这是因为您附加到该查询的联接。
避免这种行为的一种方法是在查询中使用 DISTINT 子句,这将删除结果中所有重复的行。使用 DISTINT 的标准可能会非常棘手,我建议您阅读不同的标准投影,这是您需要的
特别是使用 Hibernate 时,很难确定这些重复行的原因,所以如果您发现自己处于这种情况,您应该启用生成的 SQL 日志,然后找到问题的根源.
我发现了问题。这是因为获取策略而发生的。应该是学生大学实体中的LAZY fetch策略。
CollegeEntity collegeId, 设置学生(OneToMany, fetchType.LAZY)