在hibernate中合并父节点后获取子ID

时间:2016-07-14 15:13:55

标签: java hibernate

当父项已合并时,是否有任何干净的方法来获取子对象的id?

Parent parent = parentDao.get(parentid);
Child child = new Child();
parent.addChild(child);
parentDao.merge(parent);
child.getId() // is null

我和父母之间有多对一的关系。

另一个问题就是这个问题,唯一有效的解决办法就是遍历儿童名单,但这听起来很可怕而且很糟糕。

JPA How can I get the generated id/object when using merge from parent but child is created?

肯定必须有一个更好的解决方案。

1 个答案:

答案 0 :(得分:0)

考虑以下双向实体结构,即

class Parent{
    @OneToMany
    List<Child> children;
}

class Child{
    @ManyToOne
    Parent parent;
}

为了获得孩子的身份,你需要先坚持孩子。

entityManager.persist(child)类似,然后将其与parent关联,除非您在Parent类中将cascadeType设置为Cascade.ALL