Java 未生成OneToMany复合密钥
我使用的是Spring安全性,为此我有一个用户和一个角色类。 用户的角色存储在联接表用户角色中。 我已经设法让Hibernate自动构建了一切,但主键不是复合键(我只能一次添加用户或角色) “用户”类: 数据库结构: 我得到的错误是:Java 未生成OneToMany复合密钥,java,hibernate,jpa,Java,Hibernate,Jpa,我使用的是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