У меня есть два метода, один из которых сохраняет объектный объект (объектный компонент EntityClass1) с помощью .persist (), передающий идентификатор EntityClass1, а другой отвечает за удаление объекта с таким же идентификатором.
У меня есть конфигурация, в которой я вызываю в третьем методе (в другом классе) оба:
1) метод выше, который выполняет .persist () и
2) метод, которыйвыполняет .remove () (то есть, действуя на тот же объект сущности - тот же идентификатор), после выполнения некоторого кода, если что-то пойдет не так.Когда происходит выполнение метода, который выполняет удаление того же объекта сущности из базы данных, когда я получаю для извлечения объекта для удаления с помощью EntityManager.find (), этот последний метод возвращает NULL.КАК ЭТО ВОЗМОЖНО??Я уверен, что сохранил этот объект.
Я уверен, что использовал все необходимое для управления транзакциями (в контексте CMT): в каждом из двух методов я создаю объект EntityManager из (@PersistenceUnitаннотированный) EntityManagerFactory, управляющий механизмом транзакций с помощью блока TRY-CATCH-FINALLY контекста CMT, в теле которого FINALLY я закрываю объект EntityManager (в теле которого TRY я выполняю .persist () и .remove () соответственно для двухметоды выше).
Итак, в моем методе удаления я не могу получить объект для удаления, даже если он только что был сохранен с помощью моего метода вставки.В чем может быть проблема?
Может быть, есть причина, по которой этот объект был удален?
Я новичок в JavaEE-JPA-JTA.Большое спасибо.
[ РЕДАКТИРОВАТЬ ]: я исправил некоторые из этих проблем.Тот em.find (), который ранее возвратил ноль, СЕЙЧАС ВОЗВРАЩАЕТ МОЙ ПОЛЕЗНЫЙ ОБЪЕКТ.Я просто изменил свой код, чтобы использовать один менеджер сущностей (комментарии @Jaspreet заставили меня это заметить), и мне пришлось изменить управление транзакциями CMT (не нужно было использовать этот блок TRY-CATCH-FINALLY).Вы можете увидеть JPA - странное поведение при использовании метода удаления EntityManager .Хотя в этой новой дискуссии я опубликовал новые номера.