一开始我的web.xml配置文件如下:
<
filter
>
< filter-name > opensession </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
</ filter >
写了个保存的代码测试了一下,报如下的错误:
在javaeye中搜索了一下,发现了Readonly的帖子,将web.xml修改为如下:
同样在论坛里面搜索到遇到这个问题的朋友,回帖说去掉singleSession!
迷惑了
< filter-name > opensession </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
</ filter >
写了个保存的代码测试了一下,报如下的错误:
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
at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java: 1076 )
at org.springframework.orm.hibernate3.HibernateTemplate$ 12 .doInHibernate(HibernateTemplate.java: 616 )
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 366 )
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java: 614 )
at com.phopesoft.security.service.impl.UserServiceImpl.addUser(UserServiceImpl.java: 40 )
at com.phopesoft.security.web.UserAction.add(UserAction.java: 52 )
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
at java.lang.reflect.Method.invoke(Method.java: 585 )
at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java: 365 )
.
are not allowed in read - only mode (FlushMode.NEVER) - turn your Session
into FlushMode.AUTO or remove ' readOnly ' marker from transaction definition
at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java: 1076 )
at org.springframework.orm.hibernate3.HibernateTemplate$ 12 .doInHibernate(HibernateTemplate.java: 616 )
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 366 )
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java: 614 )
at com.phopesoft.security.service.impl.UserServiceImpl.addUser(UserServiceImpl.java: 40 )
at com.phopesoft.security.web.UserAction.add(UserAction.java: 52 )
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
at java.lang.reflect.Method.invoke(Method.java: 585 )
at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java: 365 )
.
在javaeye中搜索了一下,发现了Readonly的帖子,将web.xml修改为如下:
<
filter
>
< filter-name > opensession </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
< init-param >
< param-name > singleSession </ param-name >
< param-value > false </ param-value >
</ init-param >
</ filter >
< filter-name > opensession </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
< init-param >
< param-name > singleSession </ param-name >
< param-value > false </ param-value >
</ init-param >
</ filter >
保存的代码顺利通过测试,但是删除的代码却不能通过了.出现如下的错误:
org.hibernate.HibernateException: Illegal attempt to associate a collection
with two open sessions
at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java: 410 )
at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java: 40 )
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java: 101 )
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java: 61 )
at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java: 55 )
at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java: 123 )
at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java: 72 )
at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java: 790 )
at org.hibernate.impl.SessionImpl.delete(SessionImpl.java: 768 )
at org.springframework.orm.hibernate3.HibernateTemplate$ 25 .doInHibernate(HibernateTemplate.java: 772 )
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 366 )
at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java: 766 )
at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java: 762 )
with two open sessions
at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java: 410 )
at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java: 40 )
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java: 101 )
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java: 61 )
at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java: 55 )
at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java: 123 )
at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java: 72 )
at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java: 790 )
at org.hibernate.impl.SessionImpl.delete(SessionImpl.java: 768 )
at org.springframework.orm.hibernate3.HibernateTemplate$ 25 .doInHibernate(HibernateTemplate.java: 772 )
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java: 366 )
at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java: 766 )
at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java: 762 )
同样在论坛里面搜索到遇到这个问题的朋友,回帖说去掉singleSession!
迷惑了