@ Hibernate-5中的@Transaction在@TransactionalEventListener上不起作用

问题描述 投票:0回答:1

迁移到Hibernate-5.2.12.Final]之前,以下代码已在hibernate 4中正常工作:

@Override
@TransactionalEventListener
@Transactional
public void afterCommitAsyncMethod(long personId) {
    Person person = super.loadByEntityId(personId);
    person.setTransferenceStatus(1);
    iPersonService.save(person);
}

该事件来自:

@Autowire
private ApplicationEventPublisher applicationEventPublisher;


@Override
@Transactional
public boolean generate(Long id) {

    Person model = loadByEntityId(id);

    applicationEventPublisher.publishEvent(new Long(id));

    //there are its own business logic
    return true;
}

但是在迁移到Hibernate-5.2.12.Final]之后,Transactional处的afterCommitAsyncMethod无法工作,因此Person对象所插入的对象没有更新。

问题出在哪里,迁移后必须添加什么配置?

在迁移到Hibernate-5.2.12.Final之前,以下代码已在hibernate 4中正常工作:@Override @TransactionalEventListener @Transactional public void afterCommitAsyncMethod(long ...

spring-boot spring-transactions hibernate-5.x
1个回答
0
投票

我在spring-source中的以下方法中遇到异常。

public static Mono<Void> invokeAfterCompletion(Collection<TransactionSynchronization> synchronizations, int completionStatus) {
    return Flux.fromIterable(synchronizations).concatMap((it) -> {
        return it.afterCompletion(completionStatus);
    }).onErrorContinue((t, o) -> {
        logger.error("TransactionSynchronization.afterCompletion threw exception", t);
    }).then();
}
© www.soinside.com 2019 - 2024. All rights reserved.