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