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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM