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:

Znalezione obrazy dla zapytania orphan records

[źródło] http://database.guide/what-is-an-orphaned-record/


Leave a comment

Your email address will not be published.


*


Ta strona wykorzystuje pliki cookie. Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Mogą też korzystać z nich współpracujące z nami firmy badawcze oraz reklamowe. Jeżeli wyrażasz zgodę na zapisywanie informacji zawartej w cookies kliknij na „akceptuję". Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce. kliknij po więcej informacji

Ta strona wykorzystuje pliki cookie. Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Mogą też korzystać z nich współpracujące z nami firmy badawcze oraz reklamowe. Jeżeli wyrażasz zgodę na zapisywanie informacji zawartej w cookies kliknij na „akceptuję". Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce.

zamknij