【发布时间】:2011-04-28 21:00:34
【问题描述】:
好的,我在父类和子类之间有一个一对多的映射。我可以保存父对象,它会自动保存子对象,但问题是在父类上执行 SELECT 时。似乎我正在为数据库表中的每个子对象获取一个父对象。 因此,如果我用 2 个子对象保存 1 个父对象,当我使用 Hibernate 选择标准时,我会得到 2 个父对象!!! 我想要的只是让 Hibernate 在 Set child 字段中返回 1 个父对象及其 2 个子对象。
我猜我的映射一定是错误的。有人可以帮忙吗?
class Parent{
Long parentId;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "parent_table_id", nullable = false)
Set childs;
....
}
class Child{
Long childId;
}
注意:“parent_table_id”引用父主键。此外,此值未映射到任何父对象或子对象。我手动插入了这个值,并且只在 @JoinColumn 注释中使用它。 好的,我是这个 JPA 的新手,但是当我保存带有子对象的父对象时,Hibernate 似乎会自动在子表中插入字段“parent_table_id”的值。 这会导致问题吗?
【问题讨论】:
-
当您在条件查询中执行内部连接时,如果您不设置 DISTINCT_ROOT_ENTITY,实际上您将获得结果集中每一行的对象。您的映射看起来不错,有人会建议发布不符合您要求的查询:)