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

时间:2011-11-29 20:57:00

标签: java sql hibernate entity

我有一个表与两个不同的表有两个不同的多对多关系。假设我有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>();

1 个答案:

答案 0 :(得分:5)

不确定;许多类型都有多个多对多。

我认为最小化多对多关系是一个好主意,但它是一种自然的结构,并且遍布整个地方。