Как выбрать записи из связанных таблиц HQL ManyToMany
Есть 3 таблицы product, category, product_and_category. Связь для category:
@ManyToMany
@JoinTable(name = "product_and_category",joinColumns = @JoinColumn(name = "category_id"),inverseJoinColumns = @JoinColumn(name = "product_id"))
private Collection<Prouct> products = new ArrayList<>();
Связь для product
@ManyToMany
@JoinTable(name = "product_and_category",joinColumns = @JoinColumn(name = "product_id"),inverseJoinColumns = @JoinColumn(name = "category_id"))
private Collection<Category> categories = new ArrayList<>();
Подскажите как написать HQL запрос чтобы например получить список category которые относятся к product с id = 1
Ответы (1 шт):
Автор решения: Михаил Ребров
→ Ссылка
Просто нужно делаете JOIN
В HQL это будет выглядеть так:
"SELECT c FROM Category c JOIN c.products p WHERE p.id = :idProduct"
Ну и пример кода с Query
TypedQuery<Category> query = entityManager.createQuery("SELECT c FROM Category c JOIN c.products p WHERE p.id = :idProduct", Category.class);
query.setParameter("idProduct", product.getId());
List<Category> categories = query.getResultList();