Rumah > Java > javaTutorial > Bagaimana untuk Memperbaiki Hibernate\'gagal untuk malas memulakan koleksi peranan\' Pengecualian?

Bagaimana untuk Memperbaiki Hibernate\'gagal untuk malas memulakan koleksi peranan\' Pengecualian?

Patricia Arquette
Lepaskan: 2024-11-29 10:09:10
asal
841 orang telah melayarinya

How to Fix Hibernate's

Menghapuskan "gagal memulakan koleksi peranan" Pengecualian Hibernate

Pengecualian "gagal memulakan koleksi peranan" Hibernate boleh timbul apabila cuba mengakses koleksi yang dimuatkan dengan malas di luar konteks sesi. Untuk menyelesaikan isu ini, mari kita mendalami senario tertentu:

Kod yang disediakan mentakrifkan perhubungan @OneToMany dalam model Topik, dipetakan oleh model Komen. Dalam pengawal anda, anda mendapatkan semula contoh Topik dan ulasannya. Paparan JSP kemudiannya mengulangi ulasan untuk memaparkannya. Walau bagaimanapun, ini mencetuskan pengecualian kerana koleksi komen dimuatkan secara lalai.

Untuk membetulkannya, anda mempunyai dua pilihan:

1. Eager Loading:

Kemas kini pemetaan medan komen dalam Topik untuk menggunakan eager loading:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "topic", cascade = CascadeType.ALL)
private Collection<Comment> comments = new LinkedHashSet<>();
Salin selepas log masuk

Eager loading memastikan koleksi komen dimulakan apabila Topik dimuatkan, menghalang pengecualian.

2. Malas Memuatkan dengan Sesi Terbuka:

Sebagai alternatif, anda boleh mengekalkan koleksi ulasan sebagai dimuatkan secara malas, tetapi pastikan sesi Hibernate dibuka apabila mengakses ulasan:

Dalam pengawal anda:

Topic topicById = service.findTopicByID(id);

// Start a new Hibernate session
Session session = sessionFactory.getCurrentSession();

Collection<Comment> commentList = topicById.getComments();

// Close the session once done
session.close();

// Pass the commentList to the view
//...
Salin selepas log masuk

Dengan membuka sesi baharu dalam pengawal, Hibernate mempunyai yang diperlukan konteks untuk memulakan koleksi ulasan. Ingat untuk menutup sesi dengan jelas apabila selesai.

Ingat bahawa pemuatan yang tidak sabar-sabar mungkin mempunyai implikasi prestasi pada koleksi yang lebih besar, jadi pilih pendekatan yang paling sesuai dengan keperluan aplikasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki Hibernate\'gagal untuk malas memulakan koleksi peranan\' Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan