Я хочу реализовать иерархию ролей, но я довольно плохо знаком с аннотациями JPA.
У меня есть объект роли с именем и идентификатором (неявным через AbstractPersistable
):
@Entity
@Table(name="role")
public class Role extends AbstractPersistable<Long> {
private static final long serialVersionUID = 8127092070228048914L;
private String name;
Теперь я хочу определить следующие отношения:
- Роль может иметь много дочерних ролей
- Роль может быть дочерней для многих ролей
Как бы я это сделал с аннотациями Hibernate?Могу ли я определить это внутри ролевого объекта
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable( name = "role_hierarchy",
joinColumns = { @JoinColumn(name = "role_id")},
inverseJoinColumns={@JoinColumn(name="child_role_id")})
private List<Role> roles;
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable( name = "role_hierarchy",
joinColumns = { @JoinColumn(name = "child_role_id")},
inverseJoinColumns={@JoinColumn(name="role_id")})
private List<Role> children;
Я на правильном пути?Чего мне не хватает?
Большое спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: - удалено, как было решено -
РЕДАКТИРОВАТЬ 2:
Похоже, у меня есть ошибка в моем стеке приложений.На уровне определения модели role_hierarchy работает просто отлично, поэтому не обращайте внимания на EDIT 1 ...
НО: похоже, работают оба способа (то есть создание записи в таблице m: n, каскадное удаление и извлечениеродители и дети для сущности):
- мое предложение об определении столбца объединения для обеих сторон без свойства
mappedBy
в аннотации @ManyToMany
- , а также определениявладеющая сторона и обратная сторона.
Какая разница?Имеет ли это значение?