抛出异常:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction definition.
在使用SpringMVC + hibernate开发项目时,使用hibernate进行写操作时抛出InvalidDataAccessApiUsageException的异常,在网上搜索了很多资料,多是以下解决方案,然而没有解决我的问题:
- 解决延迟加载,在web.xml中配置OpenSessionInViewFilter初始参数:singleSession:true、flushMode:AUTO
1
2
3
4
5
6
7
8
9
10
11
12<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter> - 我的解决办法
我在异常信息看到一句话:
at:
org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1175),然后就想能不能直接关闭它的检查,一试果然成功了1
2
3
4
5
6
7
8<bean name="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="checkWriteOperations">
<value>false</value>
</property>
</bean>