项目框架用springMVC+hibernate+spring,查询没问题,添加也没问题,但是更新的时候,数据库数据没有修改,也不报错,检查发现是事务问题,然后继续测试发现在添加的时候,即使事务还没结束,数据也会插入到数据库中,网上搜了下,最开始找下以下办法
在springmvc的配置文件里,修改自动扫描的配置,屏蔽掉service(http://www.iteye.com/problems/2646)
<context:component-scan base-package="com.lmiky">
<context:exclude-filter type="regex" expression=".*ServiceImpl$" />
</context:component-scan>
后来觉得这个办法不够灵活,继续搜了下,找了个更好的办法
参考(http://jinnianshilongnian.iteye.com/blog/1762632 和 http://sulong.me/2011/08/30/hibernate_update_fail)
改为
<context:component-scan base-package="com.lmiky" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
顺便把spring环境的配置文件也改下,过滤掉controller
<context:component-scan base-package="com.lmiky" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
然后有个挺奇怪的问题:(show_sql配置是true)即使事务还没结束,saveOrUpdate如果是添加,会马上打印出insert语句,但是如果是更新的话,只有在整个事务方法结束的时候才会打印