您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Hibernate多对多关联:左侧集合包含元素,但右侧集合为空

Hibernate多对多关联:左侧集合包含元素,但右侧集合为空

问题可能是由于您两次映射了相同的双向关联。如果您对相同的联接表或联接列两次告诉Hibernate,则存在问题。在双向关联中,关联的一端必须映射该关联,而另一端必须使用mappedBy属性告诉Hibernate这是另一端的逆。

由于多对多是完全对称的,因此请选择一端作为所有者(即,映射关联并因此具有@JoinTable注释的一端)。另一侧只是反面,因此没有@JoinTable注释,但具有mappedBy属性

例:

@Entity
@Table
public class User extends BusinessObject {

    ...

    // This end is the owner of the association
    @ManyToMany
    @JoinTable(name= "user_role",
               joinColumns = {@JoinColumn(name="user_id")},
               inverseJoinColumns = {@JoinColumn(name="role_id")})  
    private Set<Role> roles = new HashSet<Role>();      
    ... 
}

@Entity
@Table
public class Role extends BusinessObject {
    ...

    // This end is not the owner. It's the inverse of the User.roles association
    @ManyToMany(mappedBy = "roles")
    private Set<User> users = new HashSet<User>();

    ... 
}

补充笔记:

其他 2022/1/1 18:13:41 有516人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶