Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Spring Data/JPA - Como validar diversos filtros na consulta?

Estou querendo resolver um problema, já encontrei implementações com 'specifications' do JPA, porém eu não sei se ele aceita relações como JOINS etc..

Eu quero montar uma consulta através do JPA, essa consulta poderá ter N campos como filtro de busca, porém queria fazer de uma forma que eu não precise toda hora montar vários if's, pensando também que essa mesma consulta no futuro terá JOIN etec..

Segue abaixo a consulta que está sendo feito até o momento...

@Query(value = "SELECT v FROM VideoGTVEntity v WHERE (v.dataVideoGtv BETWEEN :startDate AND :endDate)"
            + " AND v.gtv = :gtv")
    Page<VideoGTV> findAllWithFiltersWithJPA(
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate, 
            @Param("gtv") Long gtv,
            Pageable paginacao);

Porém se eu não enviar o GTV ele não retorna nada na consulta, pois ele não entende que caso o GTV seja null/vazio ele não deveria colocar a clausula AND.

Existe soluções para consultar com muitos filtros usando JPA + Pageable?

1 resposta

Você vai ter que utilizar alguns ifs para montar essa consulta