我目前正在为后端进行用户管理。用户应具有不同的权限。为此,我使用Hibernate将用户和角色存储为manyToMany关系。我要实现以下结构:
为避免“免费”权限,我会将角色作为枚举值保留在每个用户的列表中。不幸的是,Hibernate不会为我创建中间表,我也不知道如何让Hibernate为我创建中间表。
User.java
j=1
Role.java
while
我非常喜欢Zwischentabelle“ UserRole” mit einer Klasse zu erreichen,halte ich aber nichtfürwirklich richtigbzw。塞尔·乌姆斯塔德利希。 Ich glaube das meine Anchationen noch nicht richtig sind undwürdemich um einen Tipp freuen。
我的设置使用JPA2.1休眠。我的数据库是当前的mysql版本。
答案 0 :(得分:0)
在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_ROLE",
joinColumns = { @JoinColumn(name = "ID_ROLE") },
inverseJoinColumns = {
@JoinColumn(name = "ID_USER")
})
private Set<User> users;