Rumah >Java >javaTutorial >Bagaimana untuk Menyelesaikan Ralat 'Rujukan Objek dan Contoh Sementara yang Tidak Disimpan' Hibernate?

Bagaimana untuk Menyelesaikan Ralat 'Rujukan Objek dan Contoh Sementara yang Tidak Disimpan' Hibernate?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 01:56:10678semak imbas

How to Resolve Hibernate's

Ralat Dihadapi: Hibernate "Rujukan Objek Pada Contoh Sementara yang Tidak Disimpan - Simpan Contoh Sementara Sebelum Membilas"

Semasa cuba menyimpan objek menggunakan Hibernate, anda mungkin menghadapi perkara berikut ralat:

object references an unsaved transient instance - save the transient instance before flushing

Memahami Isu:

Ralat ini menandakan Hibernate telah mengesan situasi di mana objek mengandungi koleksi kejadian sementara yang tidak disimpan, iaitu entiti yang masih belum disimpan ke pangkalan data. Apabila anda cuba menyimpan entiti dengan koleksi yang belum disimpan, Hibernate menjangkakan anda telah pun menyimpan kejadian sementara dalam koleksi itu.

Penyelesaian:

Untuk menyelesaikan ralat ini , anda perlu mengarahkan Hibernate untuk melonjakkan (menyimpan) kejadian sementara apabila menyimpan entiti induknya. Ini boleh dicapai dengan menambahkan atribut cascade="all" dalam pemetaan XML atau anotasi cascade=CascadeType.ALL dalam kes anotasi.

Contoh dalam XML:

<class name="com.entity.Parent">
    <collection name="children" cascade="all">
        <many-to-one name="child" />
    </collection>
</class>

Contoh dalam Anotasi:

@Entity
public class Parent {
    @OneToMany(cascade = CascadeType.ALL)
    private List<Child> children;
}

Dengan menyatakan cascade="all" atau cascade=CascadeType.ALL, anda memaklumkan Hibernate bahawa apabila anda menyimpan entiti Induk, ia juga harus menyimpan secara automatik semua entiti Anaknya, walaupun jika mereka tidak pernah disimpan ke pangkalan data. Ini memastikan bahawa semua objek dalam perhubungan dikekalkan dengan betul.

Dengan melaksanakan pembetulan ini, anda boleh berjaya menyimpan objek dengan koleksi kejadian sementara yang tidak disimpan dan mengelakkan "objek merujuk kepada contoh sementara yang tidak disimpan - simpan contoh sementara sebelum ralat flushing" dalam Hibernate.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Rujukan Objek dan Contoh Sementara yang Tidak Disimpan' Hibernate?. 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