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

Filtrar consulta JPQL de data e ano por id

Olá, tenho um consulta pronta em jqpl que esta rodando bacana e agora preciso que, além da data, filtre por usuário com o seu id, trazendo apenas os resultado por um único usuário. Estoou testando duas, a primeira me retorna todos os dados por usuário e não filtra a por data, embora esteja na query. A segunda estou tendo erro. Alguem pode me dar uma força?

@Query( value = "select * from minhas_receitas where (MONTH(data_receita) = ?1 and YEAR(data_receita) = ?2) or (usuario_id = ?3) ",
            nativeQuery = true
    )
    List<MinhasReceitas> buscarPorAnoByUsuario(String mes, String ano, Long usuarioId);
@Query( value = "select distinct usuario_id = ?1 from minhas_receitas where data_receita between MONTH(data_receita) = ?2 and YEAR(data_receita) = ?3",
            nativeQuery = true
    )
    List<MinhasReceitas> buscarPorAnoByUsuario(Long usuarioId, String mes, String ano);
3 respostas

Bom dia Clerman beleza?

Como você está usando OR, a primeira query vai te trazer todos os resultados daquelas datas (não importa qual usuario) e todos os resultados relacionados aquele usuario. Logo, acredito eu, que trocar o OR por AND já resolva seu problema na primeira query.

Valeu!

Esqueci de falar da segunda query, foi mal haha. Primeiro que se tiver a chance de resultados se repetirem adicione distinct na primeira.

Agora falando da segunda query, acredito que ela esteja dando erro pelo fato de você estar colocando condição fora da clausula where.

select distinct from minhas_receitas where usuario_id = ?1 AND data_receita between MONTH(data_receita) = ?2 and YEAR(data_receita) = ?3

Talvez, do jeito acima, arrume o seu problema.

solução!

Resolvido aqui Mário. Coloquei o parâmetro que faz a busca pelo usuário em primeiro.

"select * from minhas_receitas where usuario_id = ?1  and MONTH(data_receita) = ?2 and YEAR(data_receita) = ?3 "