JPA - странное поведение при использовании метода удаления EntityManager - PullRequest
0 голосов
/ 20 февраля 2019

Я нахожусь в конфигурации (JTA - CMT), в которой я должен удалить объект сущности после его создания.Я использую em.remove (объект) после его нахождения, но удаление не работает, или кажется, что оно не работает.

В результате получается, что объект, который я хочу и пытаюсь удалить, все еще находится в БД.

После выполнения операции удаления, если я позже попытаюсь извлечь записи из таблицы сущностей, которой она принадлежит, я ПОЛУЧУ ЭТОТ ОБЪЕКТ (очевидно, с другими объектами, которые я ранее сохранила).Моя проверка в таблице сущностей, доступ к которой через оболочку БД, подтверждает, что объекты, которые мне пришлось удалить, хранятся в таблице.Это странно.Но если я попытаюсь выполнить небольшой тест - внутри метода, который вызывает remove () - для извлечения объекта, сразу после вызова remove () для него, с помощью нового вызова find (), система по праву возвращает null (он говорит мне, что этот объект не существует).

MyEntity object = em.find(MyEntity.class, my_entity_id);  // it is found
if (object != null) {
    em.remove(object);
    log.debug("something here");
} else
    log.debug("something else here");

// here i am testing whether it is still existing
object = em.find(MyEntity.class, my_entity_id);  // it is not found, returns null

Я пытаюсь также использовать flush () сразу после remove (), но ничего не меняется, на самом деле возникает ошибка:

"java.sql.SQLException: IJ031070: транзакция не может быть продолжена: STATUS_MARKED_ROLLBACK"

Кто-нибудь сталкивался с такой ситуацией?Любое предложение?

...