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

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

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

    Java世界

    學習筆記

    常用鏈接

    統(tǒng)計

    積分與排名

    天籟村

    新華網

    雅虎

    最新評論

    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:

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

    下面是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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲黄色高清视频| 九月丁香婷婷亚洲综合色| 亚洲制服丝袜一区二区三区| 国产成人久久AV免费| 亚洲av无码乱码国产精品fc2| 视频免费在线观看| 深夜免费在线视频| 秋霞人成在线观看免费视频| 国产亚洲真人做受在线观看| 精品国产日韩久久亚洲| sss在线观看免费高清| 黄页网站免费观看| 亚洲精品中文字幕无码蜜桃| 成人无码a级毛片免费| 亚洲欧洲在线观看| 亚色九九九全国免费视频| 亚洲va久久久久| 又大又硬又爽免费视频| 国产精品综合专区中文字幕免费播放 | 久久精品国产亚洲AV天海翼| 光棍天堂免费手机观看在线观看| 亚洲AV无码久久精品成人| 又大又硬又爽又粗又快的视频免费| 国产亚洲自拍一区| 无码亚洲成a人在线观看| 日本免费一区二区三区最新| 色婷婷亚洲十月十月色天| 在线看免费观看AV深夜影院| 亚洲a∨无码精品色午夜| 亚洲国产成人久久精品99| 久久永久免费人妻精品| 亚洲国产乱码最新视频| 亚洲AⅤ优女AV综合久久久| 国产午夜精品久久久久免费视| 亚洲视频精品在线观看| 国产男女猛烈无遮档免费视频网站| 亚洲成a人片在线观| 亚洲高清免费视频| 91青青国产在线观看免费| 亚洲AV日韩AV永久无码久久| 91成人免费观看在线观看|