Java Hibernate-使用第三个表处理枚举角色的用户
我目前正在为后端进行用户管理。用户应该拥有不同的权限。为此,我使用Hibernate将用户和角色存储为多个关系。我希望实现以下结构: 为了避免“自由”权限,我会将角色作为枚举保留在每个用户的列表中。不幸的是,Hibernate没有为我创建中间表,我不知道如何让Hibernate为我创建它 User.javaJava Hibernate-使用第三个表处理枚举角色的用户,java,mysql,hibernate,jpa,jpa-2.1,Java,Mysql,Hibernate,Jpa,Jpa 2.1,我目前正在为后端进行用户管理。用户应该拥有不同的权限。为此,我使用Hibernate将用户和角色存储为多个关系。我希望实现以下结构: 为了避免“自由”权限,我会将角色作为枚举保留在每个用户的列表中。不幸的是,Hibernate没有为我创建中间表,我不知道如何让Hibernate为我创建它 User.java @Entity @Table(name = "user") @XmlRootElement public class User implements Serializa
@Entity
@Table(name = "user")
@XmlRootElement
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "user_id")
private int id;
@Column(nullable=false)
@FormParam("username")
private String username;
@Column(nullable=false)
@FormParam("password")
private String password;
private String firstName;
private String lastName;
private String email;
private boolean isActive;
@ElementCollection(targetClass = Role.class, fetch=FetchType.EAGER)
@Enumerated(EnumType.STRING)
@CollectionTable(name="user_roles")
@Column(name="role")
private Set<Role> roles;
getters and setters
我有一个“用户角色”我是克拉斯·祖尔·雷琴,但我不知道他是谁。塞尔乌姆斯特恩德里奇。我不知道该怎么解释,我不知道该怎么解释
我的设置是使用JPA2.1进行休眠。我的数据库是当前的mysql版本。在N到M关系中,需要一个中间表,它在两个实体之间创建一个关系 没有@Join的实体。。(表、列)注释没有关系 若要对此中间表的实体建模,严格来说不需要新实体,应使用@JoinTable注释,如下所示: 用户实体
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "USERS_ROLE",
joinColumns = { @JoinColumn(name = "ID_USER") },
inverseJoinColumns = {
@JoinColumn(name = "ID_ROLE")
})
private Set<Role> roles;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“USERS\u ROLE”,
joinColumns={@JoinColumn(name=“ID\u USER”)},
反向连接列={
@JoinColumn(name=“ID\u角色”)
})
私人设定角色;
角色实体(如果需要)
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“USERS\u ROLE”,
joinColumns={@JoinColumn(name=“ID_ROLE”)},
反向连接列={
@JoinColumn(name=“ID\u USER”)
})
私人用户;
在N到M关系中,您需要一个中间表,它在两个实体之间创建一个关系
没有@Join的实体。。(表、列)注释没有关系
若要对此中间表的实体建模,严格来说不需要新实体,应使用@JoinTable注释,如下所示:
用户实体
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "USERS_ROLE",
joinColumns = { @JoinColumn(name = "ID_USER") },
inverseJoinColumns = {
@JoinColumn(name = "ID_ROLE")
})
private Set<Role> roles;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“USERS\u ROLE”,
joinColumns={@JoinColumn(name=“ID\u USER”)},
反向连接列={
@JoinColumn(name=“ID\u角色”)
})
私人设定角色;
角色实体(如果需要)
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“USERS\u ROLE”,
joinColumns={@JoinColumn(name=“ID_ROLE”)},
反向连接列={
@JoinColumn(name=“ID\u USER”)
})
私人用户;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "USERS_ROLE",
joinColumns = { @JoinColumn(name = "ID_ROLE") },
inverseJoinColumns = {
@JoinColumn(name = "ID_USER")
})
private Set<User> users;