Fazer JOINS com outras tabelas… porém, a minha dúvida é como fazer para pegar os campos de outras tabelas. Segue os meus códigos:
Essa é minha consulta SQL, que retorna os dados que estou precisando:
SELECT
o.idorder,
o.date_reg,
o.total,
o.pay_type,
o.order_status,
o.for_collection,
o.fk_idbusiness as restaurant_id,
u.email,
u.first_name,
b.idbusiness as id_business
from orders o
inner join customer as c on ( c.idcustomer = o.fk_idcustomer )
inner join user as u on ( u.iduser = c.fk_iduser )
inner join business_delivery_address as d on ( o.fk_idbusiness_delivery_address = d.idbusiness_adress )
inner join business as b on ( b.idbusiness = d.fk_idbusiness )
where o.idorder = 71424;
Tenho as entidades então no Java: Order, User, Business, Customer e BusinessDeliveryAdress. O número depois de “=” é um id qualquer de uma Order.
A minha consulta no Java, com a notação @Query é essa (que não está dando certo e não sei se estou fazendo certo ou errado) :
@Query("SELECT o.id, o.dateReg, o.total, o.payType, o.orderStatus, o.forCollection, o.business.id, "
+ "o.customer.user.email, o.customer.user.firstName, o.customer.user.lastName, o.deliveryAddress.business.id "
+ "FROM Order o JOIN o.customer c JOIN c.user u JOIN o.deliveryAddress d JOIN d.business b "
+ "WHERE o.id = :idOrder")
List<Order> findByGiuli(@Param("idOrder") Long idOrder);
O nome do método usei meu nome só para achar mais ligeiro no código.
Na verdade, queria fazer a tradução desse código SQL para esse do Java (HQL ou JPQL, não tenho certeza…)