Sorunun tespiti için kullandığınız transaction-type önemlidir JTA kullanmıyor transaction ı siz yönetiyor iseniz bu soruna bulaşmayı siz seçmişsiniz demektir.Kullandığınız teknoloji sebepli Resource-Local ile çalışıyorsanız entitymanager ı ne zaman kapattığınız önemlidir.
Genelde hata sayfaya gelen listedeki bir elemanın silinme isteği sebebi ile alınır.Datayı sayfaya getirdikten sonra entitymanager ı kapatmış iseniz silme işleminde yeni bir entitymanager oluşturmanız gerekecek bu entitymanager ile
EntityManager#remove()
denediğinizde hata alacaksınız
Hata mesajında belirtildiği üzere bu entitymanager yeni oluşturuldu ve içinde attach edilmiş sizin belirttiğiniz gibi bir entity bulunmuyor
Yapılması gereken
EntityManager#contains()
metodu ile entitymanager için bu entity nin varlığının teyidi mevcut ise EntityManager#remove()
aksi durumdaEntityManager#merge()
. denenmesidir Aşağıda kodun shorten hali bulunmaktadır.em.remove(em.contains(entity) ? entity : em.merge(entity));
Hiç yorum yok:
Yorum Gönder