Может ли сущность иметь более одного отношения «многие ко многим»? - PullRequest
3 голосов
/ 30 ноября 2011

У меня есть таблица, которая имеет два разных отношения «многие ко многим» с двумя разными таблицами. Допустим, у меня есть User <---> UserRole <-> Role и User <-> UserGroups <-> Groups. Поскольку я новичок в области гибернации и сопоставления баз данных, мне было интересно, если в моей сущности 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 Ответ

5 голосов
/ 30 ноября 2011

Конечно; у многих типов есть много-много-много.

Я думаю, минимизация отношений «многие ко многим» - хорошая идея, но это естественная структура, которая встречается повсеместно.

...