was not registered for synchronization because synchronization is not active
报SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7862f70e] was not registered for synchronization because synchronization is not active,网上各种查找原因没找到,于是深入到org.apache.ibatis.session.defaults.DefaultSqlSession类与org.mybatis.spring.SqlSessionUtils类查看源码(mybatis-3.2.8.jar),TransactionSynchronizationManager.isSynchronizationActive()返回false时报出的这个异常。
翻译过来同步未激活,之前都好好的,为什么今天不能激活呢?是不是数据库连接没成功所以没激活?
但若连接数据库不成功不是报连接失败吗?今天没报,怀疑着查看了一下数据库配置,果然之前连的一个局域网今天没开启。
修改成正确的数据库之后错误消失。可是仍不明白为啥没报数据库连接失败
20180530:昨天在数据库连接正常的情况下仍然报这个异常,发现未将事物配置切面
<!-- 面向切面配置 --> <aop:config> <!-- 定义切入点 --> <aop:pointcut expression="execution(* service..*.*(..) )" id="pointCut"/> <!-- pointcut和advice的配置器。是将advice注入程序中pointcut位置的代码 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/> </aop:config>
其中txAdice定义了对事物的支持
<!-- 定义哪些方法需要事物支持 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 传播行为 --> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="find*" propagation="SUPPORTS" read-only="true" /> <tx:method name="select*" propagation="SUPPORTS" read-only="true" /> <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> </tx:attributes> </tx:advice>
本文来自博客园,作者:每天都要学一点,欢迎讨论和转载,转载请注明原文链接:https://www.cnblogs.com/yanan7890/p/8743736.html