使用spring mvc + hibenater集成的时候,使用session.save(),插入数据失败,sql也不打印,网上查了下资料,意思是applicationContext.xml中扫描包和spring-servlet中的扫描包重复了,前者作为父容器先启动并配置了事务,然后spring-servlet.xml再启动,作为子容器也来管理包的内容,但是会覆盖前面applicationContext.xml对包的处理,而新的管理中并没有配置事务,所以事务就失败了
解决方法:
在applicationContext.xml把controller包的注解扫描去掉
<context:component-scan base-package="com.ai.security">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
而在springMVC配置文件中将Service注解给去掉
<span style="white-space:pre"> </span><context:component-scan base-package="com.ai.security">
<span style="white-space:pre"> </span><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<span style="white-space:pre"> </span><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
经测试,成功了,saveOrUpdate,同理
或者干脆,所有扫描配置都applicationContext.xml中处理