我有一个表与两个不同的表有两个不同的多对多关系。假设我有User
< ---> UserRole
< - > Role
和User
< - > 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>();
答案 0 :(得分:5)
不确定;许多类型都有多个多对多。
我认为最小化多对多关系是一个好主意,但它是一种自然的结构,并且遍布整个地方。