Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@272672b8]
时间: 2023-11-08 21:53:46 浏览: 129
ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@272672b8] 是因为在使用MyBatis进行数据库操作时,没有开启事务或者事务没有正确配置导致的。在引用中提到了这个错误信息,它表示当前的SqlSession并没有被包裹在事务中,因此在关闭SqlSession时会产生该警告。
根据引用,可以在service层的代码中使用@Transactional注解来声明事务,通过配置rollbackFor属性,可以设置在遇到异常时回滚事务。这样就可以确保在进行数据库操作时,会自动开启事务并在需要的情况下回滚事务。
引用中解释了出现这个错误的可能原因是由于Spring的父子容器关系导致的冲突。在父子容器中,由ServletContextListener生成的是父容器,而由SpringMVC生成的是子容器。当子容器的Controller进行扫描装配时,装配了带有@Service注解的实例,而这些实例应该由父容器进行初始化以保证事务的增强处理。因此,如果没有正确配置父子容器的关系,就会导致SqlSession没有正确的事务处理能力。
阅读全文