Ich habe zwei Entity-Klassen, die in @ OneToOne Beziehung sind. Der Beispielcode sind wie folgt:JPA OneToOne bidirektional.
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
}
meine Frage ist, „Kann ich setA (A a) Methode in der Klasse B. ich so meine
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();
Wenn ich so versucht.. , das foreign_key Feld in Tabelle A (B_ID) wurde als null gespeichert.
Bitte helfen Sie mir.
welchen Ansatz Sie verwendet? –
dann fri, was wären die Unterschiede zwischen unidirektionalen und bidirektionalen in @ OneToOne Beziehung ..? Danke für deine Antwort! –
Unidirektional bedeutet, dass Sie nur eine Beziehung haben, die in eine Richtung geht, und diese Beziehung steuert den Fremdschlüssel. Bidirektional hat eine unidirektionale Komponente - eine Beziehung, die den Fremdschlüssel in der Datenbank steuert, und einen schreibgeschützten Zurückzeiger, der in die andere Richtung geht. Die Beziehung, die mit mappedby gekennzeichnet ist, ist effektiv nur lesbar, da sie die Beziehung verwendet, die für die andere Entität festgelegt wurde, aber Änderungen an dieser Beziehung ändern die Datenbank nicht. JPA erfordert, dass Sie beide Seiten einer bidirektionalen Beziehung verwalten, um die zwischengespeicherten Entitäten mit der Datenbank synchron zu halten. – Chris