躺在沙灘上的小豬

          快樂的每一天

          為何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中搜索了一下,發現了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>?


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

          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 閱讀(498) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 米易县| 湛江市| 普宁市| 泗洪县| 铜陵市| 班玛县| 浦北县| 辽源市| 库尔勒市| 陆川县| 成都市| 马关县| 汉阴县| 阿克苏市| 莲花县| 成武县| 晋宁县| 福海县| 奈曼旗| 广丰县| 广水市| 修水县| 林口县| 依兰县| 日照市| 新余市| 滦南县| 武胜县| 新乡市| 抚宁县| 云浮市| 高邑县| 百色市| 卢湾区| 深圳市| 新乐市| 虹口区| 遂平县| 交城县| 陆河县| 梁河县|