Rumah  >  Artikel  >  Java  >  Mengapakah saya mendapat \"objek berbeza dengan nilai pengecam yang sama telah dikaitkan dengan ralat sesi\" dalam pemetaan banyak-ke-banyak myHibernate?

Mengapakah saya mendapat \"objek berbeza dengan nilai pengecam yang sama telah dikaitkan dengan ralat sesi\" dalam pemetaan banyak-ke-banyak myHibernate?

DDD
DDDasal
2024-10-28 16:18:14263semak imbas

 Why am I getting

Ralat Pengecam Berbeza Hibernate dalam Pemetaan Banyak-ke-Banyak

Ralat "objek berbeza dengan nilai pengecam yang sama telah dikaitkan dengan session" berlaku apabila Hibernate cuba menyimpan objek yang sudah wujud dalam sesi. Dalam kes ini, ia nampaknya berkaitan dengan pemetaan banyak-ke-banyak yang melibatkan kelas UserBean, GroupBean dan RoleBean.

Dalam kod yang disediakan, isu itu nampaknya timbul apabila kaedah saveOrUpdate digunakan dalam fungsi simpan. saveOrUpdate cuba untuk menyimpan dan mengemas kini objek, dan dalam kes ini, ia menemui objek rolebean#1 pendua.

Ralat mencadangkan dua penyelesaian yang mungkin:

  • Gunakan session.merge( e) bukannya session.saveOrUpdate(e): Kaedah ini menggabungkan objek tertanggal dengan objek berterusan, mengelakkan konflik pengecam. Walau bagaimanapun, ia juga berpotensi untuk menimpa data sedia ada.
  • Kenal pasti punca objek rolebean#1 pendua: Periksa kod di mana kacang peranan ditugaskan kepada pengguna dan kumpulan dan tentukan sama ada terdapat isu tentang cara kejadian dibuat atau ditetapkan.

Mesej pengecualian menunjukkan bahawa objek rolebean#1 telah disimpan dua kali dalam sesi, yang boleh berlaku jika objek yang sama diperuntukkan kepada berbilang koleksi (userbean.groups dan userbean.roles) tanpa ditandakan sebagai contoh baharu dalam setiap kes.

Dengan memahami gelagat Hibernate dan meneliti kod di mana objek ditetapkan, adalah mungkin untuk menyelesaikan isu dan memastikan bahawa objek disimpan dan dikaitkan dengan betul dalam sesi.

Atas ialah kandungan terperinci Mengapakah saya mendapat \"objek berbeza dengan nilai pengecam yang sama telah dikaitkan dengan ralat sesi\" dalam pemetaan banyak-ke-banyak myHibernate?. 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