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

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

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

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    我使用的是annotation方式的hibernate配置。結果在啟動Tomcat的時候報錯:
    Invocation of init method failed; nested exception is org.hibernate.HibernateException: cannot simultaneously fetch multiple bags
    解決方法:
    去除Annotation中的所有FetchType="EAGAR"




    評論

    # re: Hibernate啟動報錯cannot simultaneously fetch multiple bags  回復  更多評論   

    2013-05-22 10:09 by 黃威
    cannot simultaneously fetch multiple bags異常是由于持久層實時加載太多異同對象而致。例如用戶登錄時,同步實時加載用戶的角色對象、權限對象,而往往這些關系都是多對多關系,就單一列內容來看存在重復的值,從而引起multiple bags。我在網上搜索這類結果,幾乎都提出一個解決辦法——采用延遲加載,即fetch=FetchType.LAZY,這樣就束縛了框架的強大功能,也有提過用@IndexColumn解決,但@IndexColumn是Hibernate的東西,不是JPA規范(下文有討論)。既要實時加載,又保證不會出現主題問題,這就是本文所要探討的。

    JPA規范中,一對多或多對多的多方數據抓取過來后必須用容器類存,例如Set、List、Map等,初學者可能沒有對這個幾個容器認真研究,隨便拿一個就用。事實上這幾個容器有很大的區別,本文不具體討論這些容器的區別和功能,但提一個特別要注意的區別——導致本文主題的產生——就是容器內是否允許重復值,那讓們簡單地了解下這此容器的特性:

    Set:

    _Set中不允許存放重復元素;
    _Set中的元素是無序的。

    List:

    _List中可以存放重復元素;
    _List中的元素是一個有序的集合,可以通過訪問List中的元素。

    Map:

    _Map是以鍵/值存放數據,因此它有較高的存取性能;
    _Map中不允許重復的鍵,但可以有重復的值

    有了這些區別,我們就可以開始尋找主題問題,當持久框架抓取一方的對象時,同時加載多方的對象放進容器中,多方又可能與關聯其它對象,Hibernate實現的JPA,默認最高抓取深度含本身級為四級(它有個屬性配置是0-3),若多方(第二級)存在重復值,則第三級中抓取的值就無法映射,按照這個道理,就應該報出無法同時加載多個包之異常。由于國內EJB3.0以后的教材是少而甚少,更沒有較完善的JPA手冊,所以筆者這樣的理解可能會引起質疑,但事實上,筆者是通過這個思路解決了問題:

    即@ManyToMany或@OneToMany的Many方此時一定用Set容器來存放,而不能用List集合。

    不過Hibernate有些功能超越了JPA規范,它支持真正的List集合,映射集合的方式和以前完全一樣,只不過要新增 @IndexColumn注解,該注解允許你指明存放索引值的字段。但實際上是創建唯一性索引,抓取多方的結果也是唯一的,就是上述Set容器不允許重復元素的道理一樣。

    出現此異常的讀者,先看看自己是不是用了List集合而導致此問題的發生,若是用Set還出現此問題,則去看Set容器內的對象的類中是不是還有類似問題。

    # re: Hibernate啟動報錯cannot simultaneously fetch multiple bags  回復  更多評論   

    2013-06-23 13:05 by usherlight
    @黃威

    謝謝你詳盡的解釋
    主站蜘蛛池模板: 免费观看成人毛片a片2008| 久久精品国产这里是免费| 久久电影网午夜鲁丝片免费| 久久精品国产亚洲av麻豆色欲| 最近免费中文字幕中文高清| 亚洲国产精品无码久久SM| 精品国产污污免费网站入口在线 | 黄床大片免费30分钟国产精品| 免费看又黄又无码的网站| 四虎免费久久影院| 激情内射亚洲一区二区三区| 一级毛片免费观看不收费| 日本最新免费不卡二区在线| 亚洲一区AV无码少妇电影| 免费中文熟妇在线影片| 亚洲av无码一区二区三区天堂古代| 久久午夜夜伦鲁鲁片免费无码| 国产大片91精品免费看3| 亚洲一线产区二线产区区| 成人一a毛片免费视频| 久久久久久亚洲精品影院| 无码一区二区三区免费视频| 国产成人精品亚洲2020| 久久久久久久久免费看无码| 亚洲www77777| 麻豆成人精品国产免费| 校园亚洲春色另类小说合集| 国产一级特黄高清免费大片| 美女视频黄.免费网址| 亚洲AV之男人的天堂| 一本岛v免费不卡一二三区| 免费人妻无码不卡中文字幕18禁 | 少妇中文字幕乱码亚洲影视| 114一级毛片免费| 亚洲中文字幕无码爆乳app| 精品国产免费一区二区| 美女被免费网站在线视频免费 | 午夜一区二区免费视频| 男人的天堂av亚洲一区2区| 亚洲人成网站18禁止一区| 少妇性饥渴无码A区免费|