一个实体可以有多个多对多关系吗?

Nim*_*hip 3 java sql entity hibernate

我有一个表与两个不同的表有两个不同的多对多关系.假设我有User<---> UserRole< - > RoleUser< - > UserGroups< - > Groups.由于我是hibernate和数据库映射的新手,我想知道是否让我的User实体在其中有属性角色和组,两者都带有@ManytoMany注释是好的做法并且可以接受吗?

即:

 @Entity(name = "User")
 @Table(name = "USER")
 public class User {

 .... /* Obviously Id would go here and all other attributes */

 @ManyToMany(cascade = CascadeType.ALL)
 @JoinTable(name = "UserRole", joinColumns = { @JoinColumn(name="USER_ID") },
            inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") } )
 private Set<Role> roles = new HashSet<Role>();

 @ManyToMany(cascade = CascadeType.ALL)
 @JoinTable(name = "UserGroup", joinColumns = { @JoinColumn(name="USER_ID") },
            inverseJoinColumns = { @JoinColumn(name = "GROUP_ID") } )
 private Set<Group> groups = new HashSet<Group>();
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 5

当然; 许多类型都有多个多对多.

我认为最小化多对多关系是一个好主意,但它是一个自然的结构,并且遍布各处.