解決org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

報錯:org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

出錯原因:當(fetch = FetchType.EAGER)多餘一個時,持久框架抓取一方的對象時,同時又將多方的對象加載進容器中,多方又可能關聯其它對象,Hibernate實現的JPA,默認最高抓取深度含本身級爲四級(它有個屬性配置是0-3),若多方(第二級)存在重複值,則第三級中抓取的值就無法映射,就會出現 multiple bags。

解決方法:多加一個註釋  @Fetch(FetchMode.SUBSELECT)

例子:

@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL) @Fetch(FetchMode.SUBSELECT)
private List<XX> xxList;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章