JPA一对多查询结果问题

时间:2010-10-21 21:33:58

标签: java hibernate jpa

好的,我在父类和子类之间有一对多的映射。我可以保存父项,它会自动保存子对象,但问题是在父类上执行SELECT时。看来我正在为数据库表中的每个Child对象获取一个Parent对象。 因此,如果我用2个子对象保存1个父对象,当我使用Hibernate时选择Criteria我得到2个父对象! 我想要的是让Hibernate在Set子字段中返回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”引用Parent主键。此值也不会映射到任何父对象或子对象。我手动插入此值,仅在@JoinColumn注释中使用它。 好的我是这个JPA的新手,但是当我保存带有Child对象的Parent时,似乎Hibernate会自动在Child表中插入字段“parent_table_id”的值。 这会导致问题吗?

1 个答案:

答案 0 :(得分:1)

您的映射看起来很好,听起来像您实际需要的是:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

当您执行内部联接时,会导致在条件查询中返回多个结果行。