Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL):
阿新 • • 發佈:2019-02-19
1、你一定使用的spring+hibernate
2、你一定在applicationContext.xml檔案中寫了事務配置如下:
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="save*" rollback-for="Exception" />
-
<tx:method name="insert*"
- ollback-for="Exception" />
- <tx:method name="get*" read-only="true"/>
- </tx:attributes>
- </tx:advice>
3、你一定使用了過濾器OpenSessionInViewFilter
但是你一定沒在過濾器中加入flushMode引數。
原因是在專案中使用Spring+Hibernate的時候,會開啟OpenSessionInViewFilter來阻止延遲載入的錯誤,但是在我們開啟OpenSessionInViewFilter這個過濾器的時候FlushMode就已經被預設設定為了MANUAL,如果FlushMode是MANUAL或NEVEL,在操作過程中 hibernate會將事務設定為readonly,所以在增加、刪除或修改操作過程中會出現如下錯誤,只要在那個filter裡面加上這段程式碼就OK了
Xml程式碼
- <init-param>
- <param-name>flushMode</param-name>
- <param-value>AUTO</param-value>
- </init-param>
轉載地址:http://78425665.iteye.com/blog/1608841