La mappatura definisce in realtà due relazioni unidirezionali indipendenti. Ciò che si vuole è una relation.The bidirezionale seguente codice stabilirà il rapporto bidirezionale
@OneToMany(cascade = CascadeType.ALL, mappedBy = "purchaseListId")
@JoinColumn(name="pl_id",referencedColumnName="id")
private List<PurchaseListItems> purchaseListItems;
L'attributo mappedBy è necessaria in quanto non v'è alcun modo per il provider a determinare automaticamente che i rapporti specificati in realtà formano un unico rapporto. Si potrebbe usare il tipo Java del membro dell'istanza, ma se si hanno più membri dello stesso tipo. E ci sono molti scenari in cui hai due relazioni singole. Esempio:
OneToMany: Utente -> ForumThread (i fili creati dall'utente)
ManyToOne: ForumThread -> Utente (. L'utente che ha chiuso il filo ovviamente non necessariamente quello che ha iniziato il filo)
Queste sono due relazioni indipendenti e devono essere trattate come tali. Sareste piuttosto sorpresi se la vostra persistenza fornisse appena una relazione bidirezionale da ciò solo perché i tipi e la molteplicità corrispondevano.
Si noti inoltre che le relazioni bidirezionali non vengono gestite automaticamente da alcun provider JPA, ovvero che il lato inverso non viene automaticamente aggiornato/impostato nel modello a oggetti e quindi non nel db. Devi farlo da solo. A proposito, in tutti i miei progetti i rapporti bidirezionali sono stati un rompicoglioni e penso che sia consigliabile evitarli.
JPA non gestisce le relazioni bidirezionali. Devi stabilire tu stesso la relazione inversa. Si noti inoltre che i mapping definiscono due relazioni unidirezionali indipendenti. Vedi la mia spiegazione sotto – bennidi