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.
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
dlemos
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")Stringname,@Param("email")Stringemail);
I
igson.mendes
Boa Ideia. Usei o Specification do Spring data.
R
rmendes08
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
rmendes08
Ué, vai jogar o framework inteiro fora por causa de 1 única query que não é atendida ?
I
igson.mendes1 like
O Specification ajudou a resolver o meu problema.
M
MuPezzuol
Como você usou o Specification? Estou precisando fazer isso também…