Ihr Mapping definiert tatsächlich zwei unabhängige unidirektionale Beziehungen. Was Sie wollen, ist ein bidirektionaler relation.The folgenden Code wird die bidirektionale Beziehung
@OneToMany(cascade = CascadeType.ALL, mappedBy = "purchaseListId")
@JoinColumn(name="pl_id",referencedColumnName="id")
private List<PurchaseListItems> purchaseListItems;
Das mappedBy Attribut ist notwendig festzustellen, da es keine Möglichkeit für den Anbieter ist, automatisch festzustellen, dass die angegebenen Beziehungen tatsächlich eine einzige Beziehung bilden. Man könnte den Java-Typ des Instanzmitglieds verwenden, aber was ist, wenn mehrere Elemente desselben Typs vorhanden sind. Und es gibt viele Szenarien, in denen Sie zwei einzelne Beziehungen haben. Beispiel:
OneToMany: Benutzer -> ForumThread (die Fäden vom Benutzer erstellt)
ManyToOne: ForumThread -> Benutzer (. Der Benutzer, der den Faden geschlossen offensichtlich nicht unbedingt derjenige, der den Thread gestartet)
Dies sind zwei unabhängige Beziehungen und müssen als solche behandelt werden. Sie wären ziemlich überrascht, wenn Ihre Persistenz nur eine bidirektionale Beziehung daraus hervorbringen würde, nur weil die Typen und die Multiplizität übereinstimmen.
Beachten Sie auch, dass bidirektionale Beziehungen nicht automatisch von einem JPA-Provider verwaltet werden, dh die inverse Seite wird nicht automatisch in Ihrem Objektmodell und somit nicht in der db aktualisiert/gesetzt. Das musst du selbst machen. Übrigens, in all meinen Projekten waren bidirektionale Beziehungen eine Nervensäge und ich denke, es ist ratsam, sie zu vermeiden.
JPA verwaltet keine bidirektionalen Beziehungen. Sie müssen die umgekehrte Beziehung selbst herstellen. Beachten Sie auch, dass Ihre Zuordnungen zwei unabhängige unidirektionale Beziehungen definieren. Siehe meine Erklärung unten – bennidi