【发布时间】:2010-06-15 10:50:03
【问题描述】:
我已经使用 JPA(特别是 Hibernate)映射了两个实体。这些实体具有一对多的关系(我已经简化了演示):
@Entity
public class A {
@ManyToOne
public B getB() { return b; }
}
@Entity
public Class B {
@OneToMany(mappedBy="b")
public Set<A> getAs() { return as; }
}
现在,我正在尝试通过使用关系的一侧/非所有者侧(即被引用的表)的设置器在这些实体的两个实例之间创建关系:
em.getTransaction().begin();
A a = new A();
B b = new B();
Set<A> as = new HashSet<A>();
as.add(a);
b.setAs(as);
em.persist(a);
em.persist(b);
em.getTransaction().commit();
但是,这种关系不会持续到数据库中(为实体 A 创建的行没有引用为实体 B 创建的行)。为什么会这样?我希望它能够工作。
此外,如果我从 @OneToMany 注释中删除“mappedBy”属性,它将工作。再次 - 为什么会这样?以及删除“mappedBy”属性可能产生的影响是什么?
【问题讨论】:
标签: hibernate jpa entity-relationship