java - Spring Boot JPA ManyToMany MappingException

标签 java spring hibernate jpa

我有两个实体想要通过 ManyToMany 关联。我找到了很多示例(例如 https://en.wikibooks.org/wiki/Java_Persistence/ManyToMany#Example_of_a_ManyToMany_relationship_annotationhttps://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/ ),甚至在我的代码中还有另一个地方,多对多关系似乎起作用,但到目前为止我仍然无法弄清楚这个。

enter image description here

我遇到以下异常:

Caused by: org.hibernate.MappingException: Foreign key (FKru66hm0369ayn8dvjj2rgxr9v:user_role [role_id])) must have same number of columns as the referenced primary key (user_role [user_id,role_id])

类用户

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue
    @Column(name = "user_id")
    private long id;

    @ManyToMany
    @JoinTable(
        name = "user_role",
        joinColumns = @JoinColumn(name = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Set<Role> roles;

    // getters and setters
}

类(class)角色

@Entity
@Table(name = "user_role")
public class Role {

    @Id
    @GeneratedValue
    @Column(name = "role_id")
    private long id;

    @ManyToMany(mappedBy = "roles")
    private Set<User> users;

    // getters and setters

}

最佳答案

检查this link !

无论如何,问题是你拥有类(class)角色

@Entity
@Table(name = "user_role")
public class Role {

也在用户类中

 @JoinTable(
        name = "user_role",
        joinColumns = @JoinColumn(name = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id"))

两个地方, table 的名称是相同的......
这一定是错误的原因......

关于java - Spring Boot JPA ManyToMany MappingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46278672/

相关文章:

java - Jar 库与 Android 库。有什么区别?

java - 将 jQuery 文件与 Spring MVC 链接

java - Android应用程序仅在配对后才通过蓝牙连接到java应用程序服务器

java - 在我的情况下编辑 r.java 安全吗?

java - Android 谷歌地图显示空白屏幕

java - 合并来自不同声明的多个@TestExecutionListeners?

java - Spring JPA Java [ ORA-01861 文字与格式字符串不匹配 ]

java - 只更新非空字段

java - 非法参数异常 : Could not locate named parameter

java - 无法从 Hibernate 捕获异常