[英]Entity must be managed to call remove
這里發生了什么?
@Stateless
@LocalBean
public class AppointmentCommentDao {
public void delete(long appointmentCommentId) {
AppointmentComment ac = em.find(AppointmentComment.class, appointmentCommentId);
if (ac != null)
{
em.merge(ac);
em.remove(ac);
}
}
@PersistenceContext
private EntityManager em;
}
在remove
調用時,我得到一個IllegalArgumentException
,消息是Entity must be managed to call remove: ...., try merging the detached and try the remove again.
在您的情況下,不需要合並,因為在em.find和em.remove之間的任何點都不會釋放ac。
通常,當實體被釋放時,EntityManager的方法merge將實體作為參數並返回托管實例 。 作為參數給出的實體不會轉換為附加。 例如,這里解釋了這一點: EntityManager.merge 。 你必須去:
AppointmentComment toBeRemoved = em.merge(ac);
em.remove(toBeRemoved);
試試這個:
entity = getEntityManager().getReference(AppointmentComment.class, entity.getId());
getEntityManager().remove(entity);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.