JPA CascadeType.ALL and Orphaned Relationships
Di JPA, menggunakan CascadeType.ALL dengan @OneToMany pemetaan bertujuan untuk menyediakan operasi lata automatik untuk kedua-dua sisipan dan pemadaman entiti anak. Walau bagaimanapun, telah diperhatikan bahawa konfigurasi ini sahaja mungkin tidak berkesan mengalih keluar entiti anak yatim daripada pangkalan data.
Untuk menangani isu ini, terdapat beberapa pilihan yang tersedia:
Khusus Hibernate Penyelesaian:
Jika anda menggunakan Hibernate sebagai pelaksanaan JPA, anda boleh memanfaatkan anotasi khusus Hibernate @Cascade(CascadeType.DELETE_ORPHAN). Ini boleh digunakan bersama-sama dengan JPA CascadeType.ALL untuk menentukan pemadaman anak yatim secara eksplisit.
Pemadaman Manual:
Jika anda tidak menggunakan Hibernate atau lebih suka yang lebih mudah alih penyelesaian, anda boleh memadamkan entiti anak yatim secara manual sebelum memadamkan entiti induk. Ini melibatkan langkah berikut:
Sokongan JPA 2.0:
Dalam JPA 2.0, atribut OrphanRemoval telah diperkenalkan untuk mengendalikan entiti yatim piatu. Dengan menetapkan orphanRemoval = true, entiti anak yatim akan dipadamkan secara automatik apabila entiti induk dipadamkan. Ini menyediakan cara yang lebih mudah untuk mengurus perhubungan anak yatim tanpa memerlukan langkah tambahan.
Contoh:
Menggunakan atribut orphanRemoval dalam JPA 2.0:
@OneToMany(mappedBy="foo", orphanRemoval=true)
Konfigurasi ini akan memastikan mana-mana entiti anak yatim piatu dipadamkan secara automatik apabila entiti induk dialih keluar daripada pangkalan data.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Entiti Anak Yatim dengan Berkesan di JPA dengan CascadeType.ALL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!