No caso ali, fiquei em dúvida, porque ele passa uma parte da String fora dos " ifs" e depois, dentro dos ifs, o jpql recebe uma nova String. Nesse contexto, não entendi porque não sobreescrever a String, mas sim junta ambas.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
No caso ali, fiquei em dúvida, porque ele passa uma parte da String fora dos " ifs" e depois, dentro dos ifs, o jpql recebe uma nova String. Nesse contexto, não entendi porque não sobreescrever a String, mas sim junta ambas.
Olá, Rodrigo!
O código apresentado na aula está utilizando uma técnica comum para construir consultas dinâmicas, onde os parâmetros são opcionais. A ideia é que a consulta base (a string JPQL) seja modificada para incluir condições adicionais baseadas nos parâmetros que são fornecidos.
No início, a string JPQL é inicializada com a consulta base "SELECT p FROM Produto p WHERE 1=1". A condição 1=1 é sempre verdadeira e é usada apenas para facilitar a adição de condições adicionais.
Em seguida, para cada parâmetro que é fornecido (ou seja, não é nulo), uma condição adicional é adicionada à consulta. Isso é feito através da concatenação de strings, o que significa que a string JPQL original não é sobrescrita, mas sim estendida.
Por exemplo, se o parâmetro nome for fornecido, a string " AND p.nome = :nome" é adicionada à consulta. Isso resulta na consulta "SELECT p FROM Produto p WHERE 1=1 AND p.nome = :nome". Se o parâmetro preco também for fornecido, a string " AND p.preco = :preco" é adicionada, resultando na consulta "SELECT p FROM Produto p WHERE 1=1 AND p.nome = :nome AND p.preco = :preco", e assim por diante.
A razão para não sobrescrever a string JPQL, mas sim juntar ambas, é que queremos manter todas as condições que foram adicionadas anteriormente. Se sobrescrevêssemos a string JPQL, perderíamos todas as condições adicionadas anteriormente e ficaríamos apenas com a última.
Espero ter ajudado e bons estudos!
Sim, entendi esses conceitos, mas para mim dentro do if deveria existir jpql += "nanaã...", do jeito q ele colocou, com jqpl = "x" , para mim, parece q vai sobescrever.
Oi!
Sim, no vídeo ficou errado mesmo. Era para concatenar, mas a String acabou sendo sobrescrita dentro do if.
Bons estudos!