Подтвердить что ты не робот

Сущность должна управляться для вызова 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.

4b9b3361

Ответ 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);