- 解决Hibernate的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.问题
- 一般这个错误是事务引起的,如果确定事务没有问题,还是有这个错,可以重写OpenSessionInViewFilter的2个方法
- //在myfaces的wiki里提供了OpenSessionInViewFilter的一个子类如下:
- public class OpenSessionInViewFilter extends org.springframework.orm.hibernate3.support.OpenSessionInViewFilter {
- /**
- * we do a different flushmode than in the codebase
- * here
- */
- protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
- Session session = SessionFactoryUtils.getSession(sessionFactory, true);
- session.setFlushMode(FlushMode.COMMIT);
- return session;
- }
- /**
- * we do an explicit flush here just in case
- * we do not have an automated flush
- */
- protected void closeSession(Session session, SessionFactory factory) {
- session.flush();
- super.closeSession(session, factory);
- }
- }