Есть проект с 4 таблицами: users
, companies
, roles
и user_roles_relationships
.
В user_roles_relationships
есть 3 столбца: user_id
, role_id
и company_id
.
Каждый пользователь имеет разные роли для каждой компании.
Я использую JPA, но, как получить все компании от конкретного пользователя? Например, в разделе списка компаний необходимо отобразить все компании, связанные с текущим аутентифицированным пользователем.
В SQL это просто, сделать внутреннее объединение, используя таблицу отношений и таблицу компании и условие where, но как работать в хранилище?
Идеальный запрос:
SELECT companies.*
FROM companies
INNER JOIN user_groups_relatinships ON (user_groups_relatinships.company_id = companies.id)
INNER JOIN users ON (users.id = user_groups_relatinships.user_id)
WHERE users.id = ?
У меня есть объекты дерева, пользователь, компания и роль, объект пользователя имеет отношение ролей с использованием аннотации @ManyToMany
, а компания не имеет аннотаций отношений.