使用JPA(postgres)的Spring应用程序中的嵌套事务

时间:2016-06-20 16:13:14

标签: java spring postgresql jpa transactions

是否可以使用 postgres 在JPA PROPAGATION_NESTED中使用@Transactional()?我得到了:

org.springframework.transaction.NestedTransactionNotSupportedException:
JpaDialect does not support savepoints - check your JPA provider's capabilities

我试过了:

@Bean
public PlatformTransactionManager transactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(entityManagerFactory()
                .getObject());
    transactionManager.setNestedTransactionAllowed(true);
    return transactionManager;
}

但没有成功。

2 个答案:

答案 0 :(得分:2)

我假设你正在使用Hibernate。 Hibernate无法进行NESTED事务。

enter image description here

在下面的代码摘录中,spring设置了savePointManager。但是在Hibernate中没有实现SavepointManager的类。

答案 1 :(得分:-1)

savepointAllowed 为真,表示事务管理器允许嵌套事务。但是 JpaDialect 不支持保存点。