2012-11-14 3 views
0

У меня есть приложение Spring MVC с использованием JPA 2. Все контроллеры аннотируются с @Transactional на уровне класса.Используйте несколько контроллеров Spring JpaTransactionManager в контроллере?

Можно ли сохранить эту аннотацию на уровне класса и просто переопределить ее другой аннотацией @Transactional на уровне метода? У меня есть один метод, который я бы хотел сделать SERIALIZABLE.

ответ

1

Вы можете добавить multiple transaction managers, добавив отборочные различать, какой один, который должен быть использован, при условии, что они были настроены:

@Transactional("global") 
public class SomeService { 

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

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

Одно последнее замечание: После попытки осуществить это, я узнал следующее: JPA/Spring не поддерживает пользовательские уровни изоляции. К сожалению. org.springframework.transaction.InvalidIsolationLevelException: стандартная JPA не поддерживает пользовательские уровни изоляции - используйте специальный JpaDialect для вашей реализации JPA. – user1071914

+0

При этом вы можете указать независимый поставщик [Isolation] (http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/transaction/annotation/Isolation.html) уровень установив свойство [изоляция] (http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#transaction-declarative-attransactional-settings) свойства '@ Транзакционная аннотация. – matsev

Смежные вопросы