解决Hibernate Write operations are not allowed in read-only mode的方法

错误信息:

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.

解决方法:

方法1:在出现异常的方法中加入

1 getHibernateTemplate().setFlushMode(HibernateTemplate.FLUSH_EAGER);

方法2:重写OpenSessionInViewFilter 

 1 package cn.com.farben.framework.util;
 2  
 3 import org.hibernate.FlushMode;
 4 import org.hibernate.Session;
 5 import org.hibernate.SessionFactory;
 6 import org.springframework.dao.DataAccessResourceFailureException;
 7 import org.springframework.orm.hibernate3.SessionFactoryUtils;
 8  
 9 public class OpenSessionInViewFilter extends
10         org.springframework.orm.hibernate3.support.OpenSessionInViewFilter {
11     protected Session getSession(SessionFactory sessionFactory)
12             throws DataAccessResourceFailureException {
13         Session session = SessionFactoryUtils.getSession(sessionFactory, true);
14         session.setFlushMode(FlushMode.COMMIT);
15         return session;
16     }
17  
18     protected void closeSession(Session session, SessionFactory factory) {
19         session.flush();
20         super.closeSession(session, factory);
21     }
22 }

配置web.xml:

 1 
 2     hibernateFilter
 3     class>cn.com.farben.framework.util.OpenSessionInViewFilterclass>
 4     
 5         singleSession
 6         true
 7     
 8 
 9  
10     hibernateFilter  
11     /* 
12 

转载于:https://www.cnblogs.com/wahsonleung/p/3505984.html

你可能感兴趣的:(解决Hibernate Write operations are not allowed in read-only mode的方法)