0
私は奇妙な問題があります。子から参照されるエンティティコレクション(リレーションの所有側ではない)をエンティティプロパティに割り当ててオブジェクトを削除すると、このコレクションのゲッタを再度呼び出すと、ゲッタを呼び出すとそのエンティティが削除されたことがわかりますgetKomponenten()
JPA:コピーされたリストを操作すると、ParentCollectionも変更されます
// This is an excerpt of my Entity Paket
@OneToMany(mappedBy = "paket", cascade = CascadeType.ALL, targetEntity = Komponente.class, fetch = FetchType.EAGER)
private List<Komponente> komponenten;
public void setKomponenten(List<Komponente> komponenten) {
this.komponenten = komponenten;
}
public List<Komponente> getKomponenten() {
return komponenten;
}
// Komponente (the owning side)
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.EAGER)
private Paket paket;
// Excerpt from the ManagedBean
@ManagedBean
@ViewScoped
public class PaketController implements Serializable {
private List<Komponente> komponenteInSelectedPaketList;
private Komponente selectedKomponente;
private Paket selectedPaket;
public void removeKomponenteFromPaket() {
this.komponenteInSelectedPaketList.remove(this.selectedKomponente);
// Next row manipulates the referenced entity collectin as well
List<Komponente> example = this.selectedPaket.getKomponenten();
// example contains the list without the removed Komponente from the other list (call by reference like behaviour)
}
}
ヒント?事前にありがとうございます...
私は知っています。しかし、コピーされたリストからエンティティインスタンスを削除すると、リストから削除されます。getter getKomponenten() – MrCodex
を呼び出すと、同じリストを指すポインタが返されます。 –
そんなに愚かなこと...ええ、ありがとう... – MrCodex