mxdba321123 2010-03-17 10:55
浏览 386
已采纳

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

我的环境是 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条回答 默认 最新

  • jefyjiang 2010-03-18 13:05
    关注

    你说起框架的bug我想起来了,记得以前看见一个地方讲过,我自己也的确碰到过,spring在同时使用 通过@Service@Resource等这几个注解注入的时候,里的package如果把你添加了@transactional的方法或者类也扫描到的话,@transactional就不会起到作用,具体解决办法见http://www.iteye.com/problems/2646

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺