SpringMVC+Spring+Hibernate整合出现Executing an update/delete query问题

注:整合时如果发现无法进行update/delete情况的朋友们可以看一下本文。

 

 

原因:spring在加载时首先是加载spring框架声明的bean,也就是说最开始的时候带有事务管理的service类是加载了的,然后加载springMVC的类,这时候由于我在springMVC的包扫描配置的地方并没有过滤而是全局扫描注解,然后扫描到之前已经加载了的service类时,又生成了一遍,并且spring有这种机制如果子容器中有父容器相同的类那么将默认使子容器自己的类,这里的service并没有经过事务处理因为是由springMVC生成的,那么在springMVC的controller调用的时候自然也就没有事务了;

 

解决:

1. 将原本写在springMVC的配置文件中的<context:component-scan>及注解驱动等内容移动到spring的配置文件中;

2. 添加事务的注解驱动,开启事务注解功能  

 <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

 

注:transactionManager为事务bean的id;

 

3. service层或dao层新增注解:

@Transactional(propagation = Propagation.REQUIRED)

若标记在类上,则表明此类所有方法都进行事务处理;

 

PS:使用此方法后,无需在spring的配置文件中另行配置事务属性以及切点;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值