Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Sugestão

Esta API é muito complicada, muito mais fácil fazer a mesma consulta no próprio SQL...

Uma sugestão seria usando um between nvl ou like %:

Exemplo:

Select p 
  from Produtos p
where p.nome like '%'||:nome||'%'
    and p.data between nvl(:data, '01/01/2000') and nvl(:data, '31/12/2100')

PS: Nao testei para ver se o NVL funciona no JPQL

2 respostas
solução!
public List<Produto> buscarPorParametros(String nome, LocalDate data){
    String jpql = "Select P"
            + " from Produto P"
            + " where P.nome like '%'||:nome||'%'"
            + " and P.data_insercao between coalesce(:data, '01/01/2000') and coalesce(:data, '31/12/2100')";
    return em.createQuery(jpql, Produto.class)
            .setParameter("nome", nome)
            .setParameter("data", data)
            .getResultList();

Caso alguém queira saber, pesquisei e precisamos substituir a função "nvl" pela função "coalesce", esta mesma é substituída pela função nvl quando o algoritmo montar o código em sql para fazer a consulta no banco.

Acima o exemplo do método que montei...

Oioi Lorenzo!

Muito obrigada por compartilhar a sugestão! Bem legal ver que podemos trabalhar com várias soluções diferentes, tanto com o JPA quanto com o SQL, usando JPQL.