mxdba321123
mxdba321123
2010-03-17 10:55

关于 spring3+hibernate3.3 在事务下update没有提交sql,必须flush

  • hibernate

我的环境是 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 发现问题照旧

我现在实在是没有思路了

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

7条回答