Operacje kaskadowe – OrphanRemoval=true
Operacje kaskadowe – OrphanRemoval=true
JPA może wykonać daną operację zarówno na encji jak i na jej zagregowanych składowych. Encje które używają relacji są często uzależnione od istnienia encji należącej do relacji. Np. LineItem jest częścią encji Order. Jeśli Order zostanie usunięte to wszystkie encje LineItem również zostaną usunięte:
@OneToMany (cascade = REMOVE , mappedBy = "order") public Set <LineItem > geItems () { return items ; }
Co jeśli przypadek zakłada usunięcie encji podrzędnych? Jako, że JPA domyślnie zakłada związek agregacji co oznacza, że obiekty podrzędne mogę istnieć bez obiektów nadrzędnych to opcja:
cascade = REMOVE
nie wystarcza. Trzeba zastosować dodatkowy parametr w adnotacji @OneToMany:
@OneToMany ( mappedBy =" order ", orphanRemoval =" true") public List < LineItem > geItems () { return items ; }
Osierocone rekordy (z ang. Orphan records) to rekordy mające klucz obcy który odwołuje się do tabeli w której klucz ten nie wskazuje na żaden inny rekord:
Leave a comment