Добавление сущности во время выполнения @EntityListeners во внешнюю транзакцию - PullRequest
0 голосов
/ 14 апреля 2020

Я добавил прослушиватель сущностей, добавив аннотации

@EntityListeners

Вызов для добавления или обновления этой сущности заключен в большую транзакцию, которая также содержит некоторые другие изменения.

Чтобы вызвать слушателя непосредственно после создания объекта, я изменяю sh мои изменения сразу после создания объекта с помощью

getEntityManager().flush()

. Слушатель этого изменения запускается немедленно и как и ожидалось. Внутри обратного вызова я хочу добавить дополнительную операцию к транзакции. Но почему-то это не работает. Операции просто игнорируются при последующей фиксации транзакции (снова вне слушателя).

Есть ли возможность добавить операцию к транзакции внутри этого прослушивателя, когда сама транзакция была запущена раньше? Или, как обходной путь, возможно ли иметь какую-то вложенную транзакцию, которая содержит только операции, которые выполняются в слушателе? Использование @Transactional также не работает.

Редактировать:

добавлена ​​диаграмма для отображения потока flow

Когда добавив код для создания второго объекта в позиции (2), объект не добавляется в транзакцию. В позиции (1) (вне слушателя) все работает.

...