<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java世界

    學習筆記

    常用鏈接

    統計

    積分與排名

    天籟村

    新華網

    雅虎

    最新評論

    OpenSessionInViewFilter配置

    最近在配置 Structs, Spring 和Hibernate整合的問題:

    開啟OpenSessionInViewFilter來阻止延遲加載的錯誤的時候拋出了這個異常:

        org.springframework.dao.InvalidDataAccessApiUsageException錯誤
    但是在我們開啟OpenSessionInViewFilter這個過濾器的時候FlushMode就已經被默認設置為了MANUAL!

    如果FlushMode是MANUAL或NEVEL,在操作過程中 hibernate會將事務設置為readonly,所以在增加、刪除或修改操作過程中會出現如下錯誤:

    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;

     


    解決辦法1:

        直接修改OpenSessionInViewFilter過濾器的配置,配置過濾器的時候配置就是在一般的配置里面加上下面藍色部分就可以了,直接指定flushMode的配置就OK了:

    下面是配置文件:(web.xml)

    <filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    <init-param>
    <param-name>flushMode</param-name>
    <param-value>AUTO</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

     

    解決方法2:

        就是配置事務的邊界,在你方法的執行時配置事務邊界!

    下面是sessionFactor.xml配置:

    <!-- 事務的配置 -->
    <!-- sessionFactory 為自己配置 sessionFactory 的 bean-->
    <bean id="txManager"
    class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <aop:config>
    <!-- execution(public * *.*.*..*.*(..)) 為自己項目中操作數據庫中的方法 -->
    <aop:pointcut id="**" expression="execution(public * *.*.*..*.*(..))" />
    <aop:advisor pointcut-ref="**"
    advice-ref
    ="txAdvice" />
    </aop:config>

    <tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
    <!-- name 為 方法名 -->
    <tx:method name="**" read-only="true" />
    <tx:method name="**" propagation="REQUIRED"/>
    </tx:attributes>
    </tx:advice>

     

    下面是總結:

    原理:因為配置openSessionInView時,啟動后他默認是給沒有配置事務邊界的方法都默認為只讀的,所以在插入數據時就會報上面的錯

    posted on 2012-03-27 09:30 Rabbit 閱讀(412) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲午夜免费视频| 免费国产污网站在线观看15| 亚洲综合激情五月色一区| 无套内谢孕妇毛片免费看看| 无码免费一区二区三区免费播放| 成人免费午夜视频| 亚洲AV无码国产精品麻豆天美| 亚洲老熟女五十路老熟女bbw| 日韩视频免费在线观看| 免费大学生国产在线观看p| 亚洲三级高清免费| 精品国产污污免费网站入口在线| 国产高潮流白浆喷水免费A片 | 国产精品免费观看久久| 亚洲国产精品无码久久一线| 羞羞视频免费网站入口| 搡女人免费视频大全| 色多多免费视频观看区一区| www.91亚洲| 久久精品国产亚洲AV天海翼| 久久久久久精品免费看SSS| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲伊人久久综合中文成人网| 亚洲永久在线观看| 最近中文字幕免费完整| 亚洲日韩激情无码一区| 免费福利在线观看| 亚洲人成亚洲人成在线观看 | 久久精品亚洲一区二区三区浴池 | 国产免费AV片在线播放唯爱网 | ww在线观视频免费观看w| 日本黄色免费观看| 亚洲五月丁香综合视频| 免费一级毛片免费播放| 在线毛片片免费观看| 亚洲国产成人一区二区精品区| 国产精品视频免费| 亚洲噜噜噜噜噜影院在线播放| 最近2019中文字幕免费直播| 亚洲AV成人无码网站| 免费a级毛片在线观看|