簡體   English   中英

必須管理實體以調用刪除

[英]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.findem.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM