Java 链接父实体和子实体Hibernate JA

Java 链接父实体和子实体Hibernate JA,java,hibernate,jpa,many-to-many,one-to-many,Java,Hibernate,Jpa,Many To Many,One To Many,在JavaHibernate中,我一直在努力找到一种将角色实体与我的用户实体关联起来的好方法。我有一个用户实体,它有一个角色实体的列表。我想将它们关联起来,这样,如果删除了用户,则具有该用户的所有角色实体也将通过级联等方式删除 我从两个实体之间的@OneToMany(User)和ManyToOne(Role)关系开始,但当我删除用户时,它只是将Role表中包含用户的列设置为NULL。然后有人建议该关系为@manytomy,但这导致非法尝试将非集合映射为@OneToMany、@manytomy或@

在JavaHibernate中,我一直在努力找到一种将
角色
实体与我的
用户
实体关联起来的好方法。我有一个
用户
实体,它有一个
角色
实体的列表。我想将它们关联起来,这样,如果删除了
用户
,则具有该
用户
的所有
角色
实体也将通过级联等方式删除

我从两个实体之间的
@OneToMany
User
)和
ManyToOne
Role
)关系开始,但当我删除用户时,它只是将
Role
表中包含
用户的列设置为
NULL
。然后有人建议该关系为
@manytomy
,但这导致
非法尝试将非集合映射为@OneToMany、@manytomy或@collectionfements,我尚未成功解决该问题。因此,在我走得太远之前,我会问在
用户
角色
之间实现所需关系的最佳方式是什么

请注意:在本例中,
角色
更像是一种权限,因此用户可以拥有相同的权限,但它们链接到用户名。在下表中,您可以看到
digby.tyson
角色与
reed.robert
no.7相同,但如果
digby
被删除,则
reed
上的
角色应保持不变

User.java

@SerializedName("userrole")
@Expose
// @OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Role>   userRoles = new ArrayList<Role>();
@Entity
@Table(name = "role")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long     id;

    @NotNull
    private RoleEnum role;

    // @ManyToMany / @ManyToOne
    @JoinColumn(name = "user")
    private User user;

    [Getters & Setters]
样本表

+----+------+------------------------+
| id | role | user                   |
+----+------+------------------------+
|  1 |    0 | digby.tyson@gmail.com  |
|  2 |    1 | digby.tyson@gmail.com  |
|  3 |    2 | digby.tyson@gmail.com  |
|  4 |    3 | digby.tyson@gmail.com  |
|  5 |    4 | digby.tyson@gmail.com  |
|  6 |    5 | digby.tyson@gmail.com  |
|  7 |    6 | digby.tyson@gmail.com  |
|  8 |    7 | digby.tyson@gmail.com  |
|  9 |    5 | ronny.polley@gmail.com |
| 10 |    6 | ronny.polley@gmail.com |
| 11 |    7 | reed.robert@gmail.com  |
+----+------+------------------------+

感谢您的反馈,我已经尝试解决这个问题一天多了,因此非常感谢。

删除一个
角色
,并使用相应的
用户
是一件非常奇怪的事情<代码>角色
与往常一样是一个参考。@v.ladynev
角色
在此场景中充当权限,表只存储与
用户
关联的所有
角色
,因此当
用户
不再存在时,不再需要这些条目。它应命名为
权限
,是吗?@v.ladynev我同意,应该是的,最终会是的,但是我的主要任务是让已经编写的工作正常,然后我可以重构。你知道你需要一个多对多或单向一对多的联接表吗?