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 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办