未生成OneToMany复合密钥

时间:2018-07-23 15:03:09

标签: java hibernate jpa

我正在使用Spring Security,为此,我有一个User和Role类。 用户的角色存储在联接表User_Role中。 我已经设法让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

数据库结构: Database Structure generated

我遇到的错误是:

Error

如何在不对结构进行过多修改的情况下为我的用户添加多个角色?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是ManyToMany关系,而不是OneToMany。

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