java - @ManyToMany 编译问题

标签 java spring spring-boot

我已经处理我的用户 - 角色 - 映射问题很长一段时间了,但我目前陷入这个问题:
调用 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/

相关文章:

java - Spring Data jdbc 中的 Map<String, String> 单列映射

java - java类应该如何组织?

java - 不使用字母 e 或数字 5 在 Java 中输出或返回

java - Spring-Boot:如何在 @ImportResource 中引用 application.properties

java - Spring-Integration 聚合器无法正常工作。

java - 如何在 Quartz Scheduler 中使用 JDBC jobstore

java - Spring 启动: how to add spring-data repositories in tests

java - 如何在使用 ResponseStatusException 时记录异常信息

java - null 在此代码中如何工作?

java - implements 子句也可以继承吗?