2012-04-25 99 views
0

我正在开发一个Web应用程序,并决定使用spring-data将是一个好主意。公平地说,它使生活变得非常简单,DAO层非常薄。Spring Data,Hibernate 4.1.1和Spring JTA事务管理器

我遇到的问题是保存数据。当我使用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; 
} 

任何帮助将是巨大的。

+0

也许你在某处放置了只读标志?或者你是否将FlushMode更改为MANUAL的某处? – 2012-04-26 04:38:30

回答

0

我对你的JTA设置有些困惑,因为它非常不寻常。首先,看看如何正确设置JTA事务the reference documentation。简单地实例化JtaTransactionManager不起作用,因为您需要通过某种方式从JNDI获取UserTransaction。如果您在@Bean方法中调用afterPropertiesSet(),则会看到弹出错误消息,因为这会显示缺少的配置。