как присоединиться к 2 один ко многим сущностям jpql-запрос

#java #spring-boot #jpa #jpql

Вопрос:

продукт: идентификатор, имя, @ManyToOne() Идентификатор категории, @ManyToOne() брендИд

категория: идентификатор,имя, товары @OneToMany()

бренд: идентификатор,имя, @OneToMany() товары

у меня есть такие права. поэтому я хочу создать dto для продукта.

например;

productDto: название,название категории

таким образом, я могу создать запрос @Query("Select dtoPath.productDto(p.name,c.name) From Category c Inner Join c.products p")

но я хочу, чтобы мне понравилось;

  • productDto: название,категория,фирменное наименование

как я могу добавить соединение для запроса бренда?

Ответ №1:

Вы можете просматривать однозначные отношения в JPQL, и JPA позаботится о соединениях:

 SELECT dtoPath.productDto(p.name, p.categoryId.name, p.brandId.name)
FROM Product p
WHERE ...
 

Если вам нужны все продукты, просто опустите этот WHERE пункт. Если вы хотите, чтобы все товары относились к определенной категории, попробуйте WHERE p.categoryId=:category (и передайте всю Category сущность) или WHERE p.categoryId.id=:categoryId (и передайте только идентификатор категории).

(Неуместное предложение, не добавляйте Id к названию свойств отношения Product.categoryId и Product.brandId )