風人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
          數據加載中……

          hibernate 延遲加載的錯誤 failed to lazily initialize a collection of role

          這個問題一般出現在一對多的情況下,解決的方法有兩種
          1、設置lazy=false
          如果是用annotation,則配置如下
          @OneToMany(
             targetEntity = CourseAuthorizationItem.class,
             cascade = {CascadeType.PERSIST, CascadeType.MERGE},
             mappedBy = "course", fetch=FetchType.EAGER
            )
          將fetch類型設置成直接獲取

          2、就是使用filter,過濾所有的鏈接
          如果在使用filter的時候,要配置事務處理,否則會導致session處于只讀狀態而不能做修改、刪除的動作

          <web-app>

          <filter>
          <filter-name>hibernateFilter</filter-name>
          <filter-class>
          org.springframework.orm.hibernate.support.OpenSessionInViewFilter
          </filter-class>
          </filter>

          <filter-mapping>
          <filter-name>hibernateFilter</filter-name>
          <url-pattern>*.do</url-pattern>
          </filter-mapping>

          </web-app>

          posted on 2008-07-05 09:54 風人園 閱讀(4816) 評論(1)  編輯  收藏 所屬分類: Hibernate

          評論

          # re: hibernate 延遲加載的錯誤 failed to lazily initialize a collection of role  回復  更多評論   

          恩,謝謝,不過
          方法1不好,因為我不想每次都加載子表,很多時候不需要讀取子表
          方法2試過了,實際運行網站時可以用,但是在junit測試時還是報session關閉的錯誤,不知道測試時應該怎么解決?
          2009-06-02 11:36 | shappy
          主站蜘蛛池模板: 红桥区| 辰溪县| 古浪县| 罗定市| 林州市| 咸阳市| 肇州县| 独山县| 临西县| 庐江县| 清水县| 保德县| 株洲市| 衡阳市| 临沂市| 正阳县| 台前县| 富裕县| 高碑店市| 磐石市| 定结县| 赤壁市| 怀来县| 黑水县| 平度市| 稷山县| 永善县| 洛宁县| 特克斯县| 微山县| 韩城市| 松阳县| 哈密市| 临泉县| 绵竹市| 麻栗坡县| 通辽市| 郎溪县| 邹平县| 新泰市| 沂源县|