Java 未生成OneToMany复合密钥

Java 未生成OneToMany复合密钥,java,hibernate,jpa,Java,Hibernate,Jpa,我使用的是Spring安全性,为此我有一个用户和一个角色类。 用户的角色存储在联接表用户角色中。 我已经设法让Hibernate自动构建了一切,但主键不是复合键(我只能一次添加用户或角色) “用户”类: 数据库结构: 我得到的错误是: 我如何才能在不太修改结构的情况下为用户添加多个角色?我认为您看到的是一种多人关系,而不是一人一人的关系 一个用户可以有多个角色,但表中的每个角色都可以应用于多个用户。如何在不太修改结构的情况下为用户添加多个角色?必须将唯一约束更改为应视为重复的多列。就这么简单

我使用的是Spring安全性,为此我有一个用户和一个角色类。 用户的角色存储在联接表用户角色中。 我已经设法让Hibernate自动构建了一切,但主键不是复合键(我只能一次添加用户或角色)

“用户”类:

数据库结构:

我得到的错误是:


我如何才能在不太修改结构的情况下为用户添加多个角色?

我认为您看到的是一种多人关系,而不是一人一人的关系


一个用户可以有多个角色,但表中的每个角色都可以应用于多个用户。

如何在不太修改结构的情况下为用户添加多个角色?必须将唯一约束更改为应视为重复的多列。就这么简单,我做了一件蠢事。是的,我在看桌子的结构(不是很清楚),忘记了很多东西。谢谢!
@Entity(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column(unique = true)
    private String username;
    private String password;
    @Column(unique = true)
    private String email;
    private boolean enabled;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = Role.class)
    @JoinTable(name = "USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = {
            @JoinColumn(name = "ROLE_ID") })
    private Set<Role> roles;
// Getters and Setters
@Entity(name = "role")
public class Role {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column(unique=true)
    private String name;
// Getters and Setters