У меня есть сущность с подключенным прослушивателем сущностей:
@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 () все в порядке, но я хочу откатить создание сущности, если метод слушателя завершится неудачей.Заранее спасибо.