Сущность должна управляться для вызова 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.
Ответы
Ответ 1
В вашем случае слияние не требуется, потому что ac не отключается в любой точке между em.find и em.remove.
В общем случае, когда сущность отключена, метод EntityManager merge принимает объект как аргумент, а возвращает управляемый экземпляр. Объект, заданный как аргумент, не преобразуется для привязки. Это объясняется здесь: EntityManager.merge. Вы должны пойти для:
AppointmentComment toBeRemoved = em.merge(ac);
em.remove(toBeRemoved);
Ответ 2
Попробуйте следующее:
entity = getEntityManager().getReference(AppointmentComment.class, entity.getId());
getEntityManager().remove(entity);