好吧我有一个一对多的父类和子类之间的映射。我可以保存父母,它会自动保存子对象,但问题是在父类上执行SELECT时。看来我正在为数据库表中的每个Child对象获取一个Parent对象。 因此,如果我保存1个父对象与2个子对象,当我使用Hibernate选择条件我得到2个父对象! 我只想让Hibernate在Set子域中返回1个父对象及其2个子对象。JPA一对多查询结果问题
我想我的映射必定是错的。有人可以帮助这个吗?
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” 引用父主键。此值也不映射到任何Parent或Child对象。我手动插入此值,并只在@JoinColumn注释中使用它。 好吧,我是新来这个JPA的东西,但似乎Hibernate会自动插入字段“parent_table_id”在Child表中的值,当我保存一个Parent与Child对象。 这可能导致问题?
当您在条件查询中执行内部连接时,如果未设置DISTINCT_ROOT_ENTITY,实际上会为结果集中的每一行获取一个对象。你的映射看起来很好,你可以建议发布不符合你要求的查询:) – Affe 2010-10-21 21:41:02