<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
    主站蜘蛛池模板: 亚洲精品成人网站在线观看| 亚洲欧美熟妇综合久久久久| 久久精品a亚洲国产v高清不卡| 亚洲伊人久久大香线蕉| 美女视频黄.免费网址| 久久久久久久岛国免费播放 | 久久久久久一品道精品免费看| 亚洲国产天堂久久综合| 亚洲一区免费视频| 中国一级特黄高清免费的大片中国一级黄色片| 你懂的免费在线观看网站| 国产91久久久久久久免费| 中国一级特黄的片子免费| 国产三级免费电影| 午夜成人无码福利免费视频| 97视频免费在线| 精品国产综合成人亚洲区| 成人影片一区免费观看| 免费国产人做人视频在线观看| 亚洲美女视频一区二区三区| eeuss草民免费| 全黄性性激高免费视频| fc2免费人成在线| 亚洲卡一卡2卡三卡4卡无卡三| selaoban在线视频免费精品| 国产亚洲一区二区三区在线观看| 老司机69精品成免费视频| 国产精品亚洲w码日韩中文| 亚洲国产成人综合精品| 无码日韩精品一区二区免费| 亚洲一区二区三区首页| 少妇高潮太爽了在线观看免费| 久久精品国产亚洲AV| 午夜成人免费视频| 国产亚洲精品资源在线26u| 最刺激黄a大片免费网站| 亚洲av日韩av无码| 日韩电影免费观看| 亚洲欧洲国产综合AV无码久久| 亚洲Aⅴ无码一区二区二三区软件| 蜜臀亚洲AV无码精品国产午夜.|