#postgresql #spring-boot #spring-data-jpa
Вопрос:
У меня есть таблицы пользователей, компаний и ролей. У пользователя и роли есть many to many
связь. Пользователь и компания имеют many to one
Таблица пользователей
@ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) private Setlt;Rolegt; roles = new HashSetlt;gt;(); @ManyToOne(fetch = FetchType.LAZY) private Company company;
JPA создает таблицу соединений user_roles
Собственный запрос, который я хочу сделать, это
select * from users u inner join user_roles r on r.user_id = u.id where u.company_id = 1 and r.role_id = 3
Роль 3-администратор. Поэтому я хочу найти пользователей, которые являются администраторами для данной компании. У меня также есть перечисление, подобное этому:
public enum RoleEnum { ROLE_USER, ROLE_TEAM_LEAD, ROLE_ADMIN, ROLE_SUPER_ADMIN }
Я хочу иметь возможность сделать что-то подобное в UserRepository
@Query("select u from users u inner join roles where u.company = :company and roles.name=:role") Listlt;Usergt; findByCompanyAndRole(@Param("company") Company company, @Param("role") RoleEnum role);
Как я могу это сделать?