2015-02-25 3 views
5

Я разработал программу jDA с пружинными данными, используя this учебник. Затем изменил его, добавив новый класс/метод для проверки аннотации @Transactional весны.Ошибка компиляции при использовании @Transactional с атрибутом распространения

@Transactional 
public void txnMethod() { 
    repository.save(new Customer("First Customer","")); 
    repository.save(new Customer("Second Customer","")); 
    ... 
} 

Приведенный выше код скомпилирован и выполнен правильно. Затем я изменил код, чтобы Явно установить режим распространения, как показано ниже, но это дает мне ошибку компиляции - «распространение Атрибут не определен для типа аннотаций транзакционного»

@Transactional(propagation=Propagation.REQUIRED) 
public void txnMethod() { 
    repository.save(new Customer("First Customer","")); 
    repository.save(new Customer("Second Customer","")); 
    ... 
} 

Как я могу указать распространение режим явно? Ниже приведены зависимости в build.gradle. Am с помощью пружинного версии загрузчика 1.2.1.RELEASE

dependencies { 
    compile("org.springframework.boot:spring-boot-starter-jdbc") 
    compile("org.springframework.boot:spring-boot-starter-data-jpa") 
    compile("org.springframework.boot:spring-boot-starter-web") 
    compile ("org.springframework.boot:spring-boot-starter-tomcat") 
    compile("com.h2database:h2")          
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") 
} 
+0

Является ли ваш '@ Transactional'' javax.transaction.Transactional' или 'org.springframework.transaction.annotation.Transactional'? Более поздний найден в 'spring-tx.jar' и поддерживает' Распространение', который также находится в 'spring-tx.jar'. – manish

+0

@Transactional - это импорт javax.transaction.Transactional * –

+0

Возникла проблема. Вам нужно использовать 'org.springframework.transaction.annotation.Transactional'. – manish

ответ

9

При работе с приложениями, которые имеют прямую или переходную зависимость от Spring Data, два класса с именем @Transactional доступен на компиляции пути к классам. Один из них - javax.persistence.Transactional, а другой - org.springframework.transaction.annotation.Transactional. Это более поздний класс, который должен использоваться для декларативного управления транзакциями с помощью Spring. Перечисление Propagation также поддерживается только более поздним классом. Первая поддерживает другую аннотацию, называемую TxType.

ли гарантировать, что @Transactional вы подаете это типа org.springframework.transaction.annotation.Transactional, как Иды иногда добавить импорт для javax.persistence.Transactional, пока пользователь печатает @Transactional. Затем попытка добавить Propagation к аннотации не удалась, потому что javax.persistence.Transactional не поддерживает это перечисление.

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

  • Нет связанных вопросов^_^