Spring Data e Filtragem de Parametros

7 respostas
java
I

Estou criando uma consulta que faz a filtragem de parâmetros para em seguida usar a query com os filtros informados.

Qual a melhor forma de fazer isso com o Spring Data ou até mesmo no JPA?

Exemplo.:

Desejo fazer um consulta passando por parâmetros três campos: nome, cpf e data de nascimento. Só que nessa consulta, nem sempre eu preciso usar os três campos de uma vez para realização da consulta. Pode-se usar um deles, dois, ou todos de uma vez.

Agradeço a quem ajudar.

7 Respostas

D

Usar JDBC não é uma opção?
Eu não vejo ganhos para usar o SpringData se você não vai usar o mesmo como o mesmo é.

D

Eu faço assim com spring data:

@Query("Select u from Usuario u where upper(u.name) like concat('%',upper(:name),'%')  or upper(u.email) like concat('%',upper(:email),'%') ")
List<Usuario> findUsers(@Param("name") String name, @Param("email")String email);
I

Boa Ideia. Usei o Specification do Spring data.

R

O problema é que você está alterando a semântica da query. Suponha que você informe os 3 campos na query. Se você usar o operador AND você vai trazer somente registros que tenham exatamente o nome, cpf e data de nascimento informados. Mas se você usar o operador OR, você vai trazer muito mais registros do que precisa. Por exemplo, vai trazer todos os registros com a data de nascimento informada, todos os registros com o CPF, todos com o nome informado …

R

Ué, vai jogar o framework inteiro fora por causa de 1 única query que não é atendida ?

I

O Specification ajudou a resolver o meu problema.

M

Como você usou o Specification? Estou precisando fazer isso também…

Criado 2 de agosto de 2018
Ultima resposta 4 de set. de 2019
Respostas 7
Participantes 5