JPA Аннотации для связи «многие ко многим» между объектами одной и той же сущности

Я хочу реализовать иерархию ролей, но я довольно новичок в аннотациях 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 аннотированиеа также определение владеющей стороны и обратной стороны.

Какая разница? Это имеет значение?

Ответы на вопрос(1)

Ваш ответ на вопрос