我的环境是 spring-security3+springMVC+spring3.0.1+hibernate3.3
一下applicationContext-resource.xml中关于事务的配置,使用的注释
[code="java"]
<!-- 事务配置 -->
<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan base-package="com.mxdba"/>
[/code]
我在做单元测试时没有问题,update的确是在事务下的
[code="java"]
@Test
@Rollback(false)
public void updateTest() {
CompanyArticle companyArticle = companyArticleServ.load(1L);
companyArticle.setContent("ddddd");
companyArticleServ.updateArticle(companyArticle, null);
}
[/code]
但是在正常情况下,update时没有任何反应,但是在update后添加getSession().flush()[color=red]就提交了[/color]
也就是说 事务并没有提交,因为如果事务正常执行的话,会flush的。
所以我在想是不是 事务没有运行,于是我尝试把 整个事务去掉,这时在
[code="java"]
public Session getSession() {
return sessionFactory.getCurrentSession();
}
[/code]
报了 没有绑定sessin,也就是说 事务实在工作的
我也想过是不是 spring-security的问题,因为他是一个filter,而在spring会用到opensessinfilter,不过我尝试过去掉spirng-security 发现问题照旧
我现在实在是没有思路了