躺在沙灘上的小豬

          快樂的每一天

          為何OpenSessionInView不能同時保存和刪除,郁悶!

          因為lazy的問題,還是采用了OpenSessionInView
          一開始我的web.xml配置文件如下:

          ????<filter>?
          ????????
          <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)?
          .?

          在javaeye中搜索了一下,發(fā)現(xiàn)了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>?


          保存的代碼順利通過測試,但是刪除的代碼卻不能通過了.出現(xiàn)如下的錯誤:

          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)?

          同樣在論壇里面搜索到遇到這個問題的朋友,回帖說去掉singleSession!

          迷惑了

          posted on 2006-04-30 15:48 martin xus 閱讀(496) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 闻喜县| 山东省| 郴州市| 岚皋县| 集安市| 江永县| 平果县| 砀山县| 康平县| 洛南县| 犍为县| 睢宁县| 博客| 陆河县| 苏州市| 察隅县| 郧西县| 金秀| 揭西县| 广西| 周口市| 高雄县| 芜湖市| 绵竹市| 牟定县| 和顺县| 河东区| 惠安县| 资溪县| 紫金县| 和平县| 马山县| 东平县| 许昌县| 济源市| 临汾市| 唐海县| 衡东县| 阿克陶县| 哈巴河县| 旬邑县|