我已经处理我的用户 - 角色 - 映射问题很长一段时间了,但我目前陷入这个问题:
调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException:使用 @OneToMany 或 @ManyToMany 定位未映射的类:
用户
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
角色
@ManyToMany(mappedBy = "roles")
private Collection<User> users;
@ManyToMany
@JoinTable(name = "roles_privileges", joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
private Collection<Privilege> privileges;
特权
@ManyToMany(mappedBy = "privileges")
private Collection<Role> roles;
我认为问题出在映射结构中的关系之间。非常感谢任何建议。
最佳答案
您应该在所有“@ManyToMany”注释中使用“mappedBy”属性。
用户
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "users")
@JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
角色
@ManyToMany(mappedBy = "roles")
private Collection<User> users;
@ManyToMany(mappedBy = "roles")
@JoinTable(name = "roles_privileges", joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
private Collection<Privilege> privileges;
关于java - @ManyToMany 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58544938/