我有两个@OneToOne关系的实体类。示例代码如下:JPA OneToOne双向。
public class A {
@Id
private int id;
private String name;
@JoinColumn(name = "B_ID", referencedColumnName = "id")
@OneToOne(cascade=CascadeType.ALL)
private B b;
//setters and getters
}
public class B {
@Id
private int id;
private String name;
@OneToOne(mappedBy="b")
private A a;
//setter and getters
}
这里我的问题是:“我可以用组A(A一)在B类的方法我的意思是这样
em.getTransaction().begin();
A aa = new A();
aa.setId(1);
aa.setName("JJ");
em.persist(aa);
B bb = new B();
bb.setId(1);
bb.setName("CC");
bb.setA(aa);
em.persist(bb);
em.getTransaction().commit();
当我试图这样。在表A(B_ID)的foreign_key场在这里保存为空。
请帮帮我。
您使用哪种方法? –
然后星期五,@OneToOne关系中单向和双向的区别是什么?感谢您的回答! –
单向意味着你只有一种关系,并且该关系控制着外键。双向有一个单向组件 - 一种控制数据库中外键的关系,以及一种只读返回指针。标记为mappedby的关系只能有效地读取,因为它使用在另一个实体上设置的关系,但对这种关系的更改不会更改数据库。 JPA要求您维护双向关系的双方以保持缓存实体与数据库不一致 – Chris