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

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

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

    隨筆 - 31  文章 - 2  trackbacks - 0
    由于OpenSessionInViewFilter把session綁在當前線程上,導致session的生命周期比事務要長,這期間所有事務性操作都在復用這同一個session,由此產生了一些“怪問題”:
    1.出現如下錯誤
    ???? 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?
    ? 分析原因:OpenSessionInViewFilter在把session綁在當前線程上的時候,會把session的flush mode 設為FlushMode.NEVER,因此,如果某個方法沒有事務或者有只讀事務,則不能對session做insert,update,delete操作,除非事先把session的flush mode手動設為auto
    方案:
    1、將singleSession設為false,這樣只要改web.xml,缺點是Hibernate Session的Instance可能會大增,使用的JDBC Connection量也會大增,如果Connection Pool的maxPoolSize設得太小,很容易就出問題。<!-- singleSession默認為true,若設為false則等于沒用OpenSessionInView -->
    2、在控制器中自行管理Session的FlushMode,麻煩的是每個有Modify的Method都要多幾行程式
    session.setFlushMode(FlushMode.AUTO);?
    ??session.update(user);?
    ??session.flush();?
    3、Extend OpenSessionInViewFilter,Override protected Session getSession(SessionFactory sessionFactory),將FlushMode直接改為Auto。
    4、讓方法受Spring的事務控制(service和配置文件對應)
    posted on 2007-11-02 17:12 緣來如此 閱讀(426) 評論(0)  編輯  收藏 所屬分類: ssh
    主站蜘蛛池模板: 57pao国产成永久免费视频| 一级一看免费完整版毛片| 日本免费一区二区三区四区五六区| 国产最新凸凹视频免费| 久久乐国产综合亚洲精品| 99久久这里只精品国产免费| 亚洲高清无在码在线电影不卡| 男人j进入女人j内部免费网站| 亚洲av成人无码久久精品| 99久久人妻精品免费二区| 亚洲尹人九九大色香蕉网站| 120秒男女动态视频免费| 久久精品亚洲一区二区三区浴池 | 亚洲精品中文字幕乱码三区| 国产va免费精品| 国产AV无码专区亚洲AV男同| 精品视频一区二区三区免费| 亚洲国产综合自在线另类| 97在线观免费视频观看| 亚洲av无码一区二区三区四区| 免费国产一级特黄久久| 国产一区二区三区免费观看在线| 亚洲av综合色区| 亚洲免费在线视频播放| 色欲色欲天天天www亚洲伊| 亚洲成aⅴ人片久青草影院| 免费一区二区无码东京热| 亚洲国产成人久久三区| 四虎永久在线精品免费影视| 成在人线av无码免费高潮水| 97久久精品亚洲中文字幕无码| 国产成人免费高清激情视频| 污视频网站在线免费看| 婷婷精品国产亚洲AV麻豆不片 | 亚洲精品无码久久久| 亚洲电影免费在线观看| 精品国产成人亚洲午夜福利| 亚洲AV网站在线观看| 午夜不卡久久精品无码免费 | 亚洲精品自在在线观看| 国产在线a免费观看|