Пользовательский запрос в JpaRepository для многих ко многим

#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);  

Как я могу это сделать?