Objek Bukan Unik dalam Hibernate: Memahami org.hibernate.NonUniqueObjectException
Apabila menyimpan objek menggunakan Hibernate, anda mungkin menghadapi ralat berikut :
Caused by: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.pojo.rtrequests.User#com.pojo.rtrequests.User@d079b40b]
Ralat ini menunjukkan bahawa sesi sudah mengandungi objek dengan pengecam yang sama (kunci utama) sebagai objek yang anda cuba simpan. Walaupun menggunakan session.clear(), masalah ini berterusan, membuatkan anda tertanya-tanya mengapa isu ini timbul.
Punca Punca dan Penyelesaian
Punca ralat ini ialah kehadiran dua objek berasingan dengan pengecam yang sama tetapi sebagai kejadian yang berbeza. Ini biasanya berlaku apabila simpanan berlata terlibat, di mana objek A mempunyai hubungan simpan lata dengan objek B, tetapi objek B sudah dikaitkan dengan sesi sebagai contoh yang berbeza daripada yang dirujuk oleh objek A.
Untuk menyelesaikan isu ini, adalah penting untuk mengenal pasti penjana kunci utama yang digunakan. Ralat berkaitan dengan mekanisme Hibernate untuk menentukan keadaan berterusan objek. Jika penjana cuba mengekalkan objek yang sudah berterusan, ia akan menimbulkan pengecualian ini.
Pertimbangan Tambahan
Dalam senario tertentu, ralat boleh dicetuskan apabila data telah dialih keluar atau diubah suai dalam jadual yang berkaitan dengan objek yang disimpan. Contohnya, jika anda cuba memasukkan semula nilai yang telah dipadamkan sebelum ini, ini boleh mengakibatkan NonUniqueObjectException.
Petua Nyahpepijat
Untuk nyahpepijat dan menyelesaikan isu ini, pertimbangkan langkah berikut:
Atas ialah kandungan terperinci Mengapakah saya Mendapat org.hibernate.NonUniqueObjectException Walaupun Menggunakan session.clear()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!