БД блокируется при выполнении прослушивателя сущностей @PostPersist метод Spring Hibernate - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть сущность с подключенным прослушивателем сущностей:

@Entity
@EntityListeners({MyEntityListener.class})
public class A {}

public class MyEntityListener implements ApplicationContectAware {
    @PrePersist
    public void prePersist(A entity) {
        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
            @Override
            public void beforeCommit(boolean readOnly) {
                //execute a db query
            }
        });
    }
}

@Service
public class MyService {

    @Transactional
    public A create() {
    myRepository.save(new A());

}

Итак, когда создается новая сущность, выполняется метод prePersist, когда я делаю еще один вызов к базе данных, но кажется, что база данныхзамки и приложение зависает.Есть ли способ использовать текущую транзакцию для второго вызова БД?При необходимости предоставит больше информации.

Если метод @PostPersist, afterCommit () все в порядке, но я хочу откатить создание сущности, если метод слушателя завершится неудачей.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...