【问题标题】:Use more than one Spring JpaTransactionManager in a controller?在控制器中使用多个 Spring JpaTransactionManager?
【发布时间】:2012-11-14 15:04:36
【问题描述】:

我有一个使用 JPA 2 的 Spring MVC 应用程序。所有控制器都在类级别使用 @Transactional 进行注释。

是否可以在类级别保留该注解,并在方法级别使用另一个@Transactional 注解简单地覆盖它?我有一种方法想使 SERIALIZABLE。

【问题讨论】:

    标签: java spring transactions


    【解决方案1】:

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

    @Transactional("global")
    public class SomeService {
    
        public void methodThatUsesTheGlobalTxManager() {
            // ...
        }
    
        @Transactional("special")
        public void methodThatUsesTheSpecialTxManager() {
            // ...
        }        
    }
    

    【讨论】:

    • 最后一点:在尝试实现这一点后,我发现了以下内容:JPA/Spring 不支持自定义隔离级别。哎呀。 org.springframework.transaction.InvalidIsolationLevelException:标准 JPA 不支持自定义隔离级别 - 为您的 JPA 实现使用特殊的 JpaDialect。
    • 也就是说,您仍然可以通过设置@Transactional 注释的isolation 属性来指定独立于供应商的Isolation 级别。
    猜你喜欢
    • 2013-05-25
    • 2011-08-26
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多