Следующее решение работает в любой реализации, совместимой с JPA 2.0.
Таблица user
имеет первичный ключ id
.
Таблица authority
имеет первичный ключ id
.
Таблица user_authority
имеет поля user_id
, authority_id
.
Класс сущности Пользователь
@JoinTable(name = "user_authority",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "authority_id", referencedColumnName = "id")})
@ManyToMany(fetch = FetchType.EAGER)
private Set<Authority> authoritySet;
Класс сущности Полномочия
@ManyToMany(mappedBy = "authoritySet", fetch = FetchType.EAGER)
private Set<User> userSet;
Таблица user_authority
не имеет представления сущности в JPA.