Rumah >Java >javaTutorial >Bagaimana untuk Memperbaiki PersistentObjectException Hibernate dengan Entiti Terpisah?

Bagaimana untuk Memperbaiki PersistentObjectException Hibernate dengan Entiti Terpisah?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 14:39:10516semak imbas

How to Fix Hibernate's PersistentObjectException with Detached Entities?

Membetulkan PersistentObjectException dalam Hibernate dengan Detached Entiti

Apabila berurusan dengan model objek berkekalan JPA, operasi tertentu mungkin menghasilkan PersistentObjectException , terutamanya apabila menguruskan perhubungan. Contohnya, dalam kes perhubungan banyak dengan satu antara Akaun dan berbilang Transaksi, percubaan untuk meneruskan Transaksi dengan Akaun yang telah berterusan mungkin mencetuskan pengecualian ini.

Memahami isu asas adalah penting. Apabila anda membuat Transaksi dan menentukan Akaun sedia ada, Akaun tersebut dianggap terpisah daripada pengurus entiti. Ini berlaku kerana anda mendapatkan semula Akaun daripada konteks yang berbeza daripada konteks yang Transaksi berterusan.

Untuk menyelesaikan isu ini, laraskan jenis lata dalam anotasi Transaksi kepada CascadeType.MERGE. Ini memastikan bahawa apabila Transaksi diteruskan, Akaun yang berkaitan akan digabungkan ke dalam konteks pengurus entiti semasa, menyelesaikan isu detasmen.

Berikut ialah coretan kod yang dikemas kini:

@Entity
public class Transaction {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(cascade = {CascadeType.MERGE}, fetch = FetchType.EAGER)
    private Account fromAccount;
}

Dengan melaksanakan perubahan ini, anda akan berjaya meneruskan Transaksi dengan Akaun yang telah berterusan, menghapuskan PersistentObjectException.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki PersistentObjectException Hibernate dengan Entiti Terpisah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn