簡體   English   中英

休眠-多個多對多關聯-無法同時獲取多個包

[英]Hibernate - multiple many to many associations - cannot simultaneously fetch multiple bags

我正在嘗試級聯映射兩個多對多關聯。 我有三個類:用戶,用戶組和權限。 第一個與第二個有很多關聯,而第二個與第三個有很多關聯。

我正在使用休眠4.2.0

@Entity
@Table(name = "user")
public class User implements Serializable {
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, targetEntity = org.weedea.bidupsys.user.logic.model.UserGroup.class)
    @JoinTable(name = "UserGroupUser", joinColumns = { @JoinColumn(name = "userId") }, inverseJoinColumns = { @JoinColumn(name = "userGroupId") })
    private List<UserGroup> userGroupList = null;
}

@Entity
@Table(name = "userGroup")
public class UserGroup implements Serializable {
    @ManyToMany(fetch = FetchType.EAGER, targetEntity = org.weedea.bidupsys.user.logic.model.Permission.class, cascade = { CascadeType.ALL })
    @JoinTable(name = "UserGroupPermission", joinColumns = { @JoinColumn(name = "userGroupId") }, inverseJoinColumns = { @JoinColumn(name = "permissionId") })
    private List<Permission> permissionList = null;
}

使用此配置,我會收到一個錯誤,因為我嘗試同時加載兩個渴望的集合:

javax.servlet.ServletException: cannot simultaneously fetch multiple bags
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)

如果將fetch = FetchType.LAZY放在第二個集合上,則會出現另一個錯誤:

failed to lazily initialize a collection of role: org.weedea.bidupsys.user.logic.model.UserGroup.permissionList, could not initialize proxy - no Session

如何將這兩個多對多關聯映射? 感謝幫助!

簡短的答案是您需要將它們映射為java.util.Set

這是一篇很好的博客文章,解釋了這個問題: 休眠異常-同時獲取多個包

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM