贝娄是我的实体:



public class EntityA {

   //...
   @OneToMany(mappedBy="entityA")
   private Set entitieBs;

}

public class EntityB {

   //...
   @ManyToOne(cascade=CascadeType.PERSIST)
   private EntityA entityA;

}

with accessors methods(getters and setters).


我打算每次当我在数据库中保存一个新的EntityB对象(将EntityA对象设置为“父对象”)时,如果我在新EntityB的父对象上调用EntityA.getEntityBs(),都将其添加到数据库中。结果集。但是,如果按照我的示例那样进行操作,它将无法正常工作。

有人知道我错了吗?

谢谢!



这是我如何保存实体的Java代码:


//...some code
EntityB eb = new EntityB();
eb.setEntityA(entityA);
entityManager.persist(entityB);



我想说明的是,我没有将entityB添加到entityA的entityB集合中。

最佳答案

每两天问一次这个问题。

JPA不会为您保持对象图的一致性。维护双向关联的双方是您的责任。如果您已提交事务,关闭会话并重新加载实体,一切都会如您所愿,因为您已经初始化了关联的拥有方。但是,如果您在内存中修改关联的一侧,则JPA不会为您修改另一侧。

关于java - 在JPA Hibernate中进行级联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8835669/

10-09 19:13
查看更多