Spring Data, Hibernate 4.1.1 и менеджер транзакций Spring JTA

Я нахожусь в процессе разработки веб-приложения и решил, что использование spring-data будет хорошей идеей. Честно говоря, это делает жизнь чрезвычайно легкой, а слой DAO очень тонким.

Проблема, с которой я столкнулся, связана с сохранением данных. Когда я использую JPATransactionManager, постоянство работает, как и ожидалось. Но мне нужно использовать JTATransactionManager. Когда я использую это, кажется, что транзакция выглядит нормально, но сброс гибернации, похоже, не связан с фиксацией tx.

DEBUG [org.springframework.transaction.jta.JtaTransactionManager] (http--127.0.0.1-8080-2) Создание новой транзакции с именем [com.clubgroups.user.registration.service.impl.UserRegistrationServiceImpl.registerUser]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT ; ''

DEBUG [org.springframework.transaction.jta.JtaTransactionManager] (http--127.0.0.1-8080-2) Участие в существующей транзакции

DEBUG [org.springframework.transaction.jta.JtaTransactionManager] (http--127.0.0.1-8080-2) Инициирование фиксации транзакции

Выше приведено отладочное сообщение, подтверждающее, что транзакция выполняется. Но данные, кажется, не сбрасываются в базу данных.

Я инициализирую менеджер транзакций следующим образом:

@Bean
public JpaTransactionManager transactionManager() {
    JtaTransactionManager transactionManager = new JtaTransactionManager();       

    return transactionManager;
}

Любая помощь будет здорово.


person Sarvajith D.R.    schedule 25.04.2012    source источник
comment
Может быть, вы где-то поставили флаг только для чтения? Или вы где-то меняли FlushMode на MANUAL?   -  person Stanislav Bashkyrtsev    schedule 26.04.2012


Ответы (1)


Я немного озадачен вашей настройкой JTA, так как она очень необычная. Во-первых, взгляните на справочная документация о том, как правильно настроить JTA-транзакции. Простое создание экземпляра JtaTransactionManager не работает, так как вам нужно каким-то образом получить UserTransaction из JNDI. Вы должны увидеть всплывающую ошибку, если вы вызовете afterPropertiesSet() в своем методе @Bean, так как это раскроет недостающую конфигурацию.

person Oliver Drotbohm    schedule 26.04.2012