1
resposta

Dúvida sobre consultas JPQL

Boa noite pessoal, estou fazendo um projeto com duas entidades no banco: vôo e passageiros. Criei e relacionei tranquilo. Mas estou com dificuldades nas consultas JPQL. Para cada Vôo eu tenho X passageiros relacionados. Como seria a query para dar um join no vôo com ID 1 todos os passageiros que estao nesse vôo?

public List buscarPassageirosNoVoo() { String jpql = "SELECT p FROM Passageiro p WHERE p.voo = 1"; return entity.createQuery(jpql, Passenger.class) .getResultList(); }

Assim funcionou de boa, mas que queria ao inves de set dentro da consulta eu quero passar por parâmetro.
1 resposta

Oi João,

Você pode receber o objeto voo como parâmetro e filtrar na consulta com ele:

public List<Passageiro> buscarPassageirosNoVoo(Voo voo) {
    return em
        .createQuery("SELECT p FROM Passageiro p WHERE p.voo = :voo", Passageiro.class)
        .setParameter("voo", voo)
        .getResultList();
}

Ou também pode filtrar pelo id do voo:

public List<Passageiro> buscarPassageirosNoVoo(Long idVoo) {
    return em
        .createQuery("SELECT p FROM Passageiro p WHERE p.voo.id = :id", Passageiro.class)
        .setParameter("id", idVoo)
        .getResultList();
}

Bons estudos!