Какую аннотацию лучше всего использовать для ролей ( для Hibernate ) в Spring?
Добрый день.
Я обычно делаю это иным образом.
1) создаю enum UserRole, UserPrivilege
2) создаю entity Role. При необходимости можно еще добавить сет из Privilege для каждой роли
3) Далее каждый entity содержит роль или сет ролей.
4) сущность User связываю с сущностью UserRole

Вот, исходники:
Сущность User
@Entity
@Data
@Table(name = "users")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class User {

  //...

  @JsonBackReference
  @ToString.Exclude
  @ManyToMany(fetch = FetchType.EAGER)
  @JoinTable(
      name = "users_roles",
      joinColumns = @JoinColumn(name = "user_id"),
      inverseJoinColumns = @JoinColumn(name = "role_id"))
  private Set<Role> roles;

}

Сущность Role
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
@Table(name = "roles")
public class Role implements GrantedAuthority {

  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private Long roleId;

  @JsonBackReference
  @ToString.Exclude
  @ManyToMany(mappedBy = "roles")
  private Collection<User> users;

  @JsonBackReference
  @ToString.Exclude
  @ManyToMany
  @JoinTable(
      name = "roles_privileges",
      joinColumns = @JoinColumn(name = "role_id"),
      inverseJoinColumns = @JoinColumn(name = "privilege_id"))
  private Collection<Privilege> privileges;

  @Enumerated(EnumType.STRING)
  private UserRole name;

  public Role() {
    super();
  }

  public Role(UserRole name) {
    super();
    this.name = name;
  }

  @Override
  public String getAuthority() {
    return name.name();
  }
}

enum UserRole
public enum UserRole {
  USER,
  ADMIN
}

сущность Privilege
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
@Table(name = "privileges")
public class Privilege {

  

  @Enumerated(EnumType.STRING)
  private UserPrivilege name;

  @JsonBackReference
  @ToString.Exclude
  @ManyToMany(mappedBy = "privileges")
  private Collection<Role> roles;


}

enum UserPrivilege
public enum UserPrivilege {
  ADMIN_PRIVILEGE,
  READ_PRIVILEGE,
  WRITING_COMMENTS_PRIVILEGE
}
Я в Джава вообще ноль, однако когда баловался со Спрингом - статьи на этом сайте очень помогали.

https://www.baeldung.com/role-and-privilege-for-sp...