Java 链接父实体和子实体Hibernate JA
在JavaHibernate中,我一直在努力找到一种将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或@
角色
实体与我的用户
实体关联起来的好方法。我有一个用户
实体,它有一个角色
实体的列表。我想将它们关联起来,这样,如果删除了用户
,则具有该用户
的所有角色
实体也将通过级联等方式删除
我从两个实体之间的@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我同意,应该是的,最终会是的,但是我的主要任务是让已经编写的工作正常,然后我可以重构。你知道你需要一个多对多或单向一对多的联接表吗?