本文主要是介绍Write operations are not allowed in read-only mode错误解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题。
开启OpenSessionInViewFilter来阻止延迟加载的错误的时候抛出了这个异常:org.springframework.dao.InvalidDataAccessApiUsageException错误
但是在我们开启OpenSessionInViewFilter这个过滤器的时候FlushMode就已经被默认设置为了MANUAL!
如果FlushMode是MANUAL或NEVEL,在操作过程中 hibernate会将事务设置为readonly,所以在增加、删除或修改操作过程中会出现如下错误:
org.springframework.dao.InvalidDataAccessApiUsageException:
Write operations are not allowed in read-only mode (FlushMode.NEVER) turn your Session into FlushMode.AUTO or remove ‘readOnly’ marker from transaction definition;- 我谷歌还有百度很多的地方都是通过修改OpenSessionInViewFilter 来解决的
解决的办法
解决2
但是 org.springframework.orm.hibernate4.support.OpenSessionInViewFilter; 中没有这个set的参数,我们需要去重写这个方法
- 我谷歌还有百度很多的地方都是通过修改OpenSessionInViewFilter 来解决的
然后配置在我们的web.xml 中放置这个拦截群
package com.hdu.cms.common.HibernateUtilExtentions;import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.orm.hibernate4.support.OpenSessionInViewFilter;/*** Created by JetWang on 2016/10/16.*/
public class OpensessionInViewFliterOver extends OpenSessionInViewFilter {@Overrideprotected Session openSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {try {Session session = sessionFactory.openSession();session.setFlushMode(FlushMode.AUTO);return session;} catch (HibernateException ex) {throw new DataAccessResourceFailureException("Could not open Hibernate Session", ex);}}
}
http://www.cnblogs.com/wql025/p/4822791.html
这篇关于Write operations are not allowed in read-only mode错误解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!