级联JPA + Hibernate

时间:2012-01-12 13:16:10

标签: java hibernate jpa cascade

贝娄是我的实体:



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 对象设置为“父”),如果我打电话给< strong> EntityA.getEntityBs()在新 EntityB 的父级上,将其添加到结果 Set 中。但如果我在我的例子中这样做它不起作用。

有人知道我错在哪里吗?

谢谢!


这是我的java代码,我如何坚持实体:


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

我想明确指出,我不会将 entityB 添加到 entityA 的entityB集合中。

1 个答案:

答案 0 :(得分:4)

每两天就会提出一个问题。

JPA不会为您保持对象图的一致性。保持双向关联的双方都是 的责任。如果您提交事务,关闭会话并重新加载实体,那么一切都将如您所期望的那样,因为您已初始化关联的拥有方。但是如果你在内存中修改关联的一面,JPA就不会为你修改另一面。