Java 在控制器中使用多个Spring JpaTransactionManager?

Java 在控制器中使用多个Spring JpaTransactionManager?,java,spring,transactions,Java,Spring,Transactions,我有一个使用JPA2的SpringMVC应用程序。所有控制器都在类级别用@Transactional注释 是否可以在类级别保留该注释,并在方法级别用另一个@Transactional注释覆盖它?我有一个方法要使其可序列化。您可以通过添加限定符来添加,以区分应该使用哪一个限定符,前提是它们已配置: @Transactional("global") public class SomeService { public void methodThatUsesTheGlobalTxManager

我有一个使用JPA2的SpringMVC应用程序。所有控制器都在类级别用@Transactional注释

是否可以在类级别保留该注释,并在方法级别用另一个@Transactional注释覆盖它?我有一个方法要使其可序列化。

您可以通过添加限定符来添加,以区分应该使用哪一个限定符,前提是它们已配置:

@Transactional("global")
public class SomeService {

    public void methodThatUsesTheGlobalTxManager() {
        // ...
    }

    @Transactional("special")
    public void methodThatUsesTheSpecialTxManager() {
        // ...
    }        
}

最后一点注意:在尝试实现这一点之后,我发现了以下问题:JPA/Spring不支持自定义隔离级别。哎呀。org.springframework.transaction.InvalidIsolationLevelException:标准JPA不支持自定义隔离级别–为JPA实现使用特殊的JPA选项。也就是说,您仍然可以通过设置
@Transactional
注释的属性来指定独立于供应商的级别。