У меня есть две сущности: транзакция и запись.Транзакция имеет некоторые собственные данные и список из одной или нескольких записей, который состоит из дебета и суммы кредита.В одной части приложения мне нужно было удалить почти все из них, и я обнаружил, что JPQL самый простой и быстрый в этом случае.
Я выполняю этот код:
entityManager.createQuery(
"DELETE FROM Entry e WHERE e IN (:entries)").
setParameter("entries", new ArrayList<Entry>(
entriesToRemove)).executeUpdate();
entityManager.createQuery(
"DELETE FROM Transaction e WHERE e IN (:transactions)").
setParameter("transactions", new ArrayList<Transaction>(
transactions)).executeUpdate();
Проблема позже в коде, все еще в той же транзакции (транзакция выполнения на этот раз) Мне нужно пройти все записи, которые существуют в некоторыхтранзакции, EntityManager все еще дает мне транзакции, которые я только что удалил.
Я подозреваю, что должен быть способ обработки этого события, в моем примере здесь я просто выполняю два удаления JPQL, но я мог бы также вызвать внешний сервис или что-то еще, что повлияло на базу данных.В любом случае мне нужно убедиться, что кеш EntityManager все еще действителен, потому что, как и сейчас, он все еще содержит удаленные объекты.
Я пробовал с entityManager.flush ();после этого удаляет безуспешно.Так как я использую executeUpdate ();удаленные данные немедленно сбрасываются в основную базу данных, поэтому я не ожидал, что это поможет.
Цените все указатели, подсказки и ответы.