Estou enfrentando um problema com uma query dinamica que fiz e num consigo resolver nem a pau. Já olhei vários posts e nenhum resolveu meu problema.
Fiz o seguinte código:
public List<Pessoa> buscaFiltro(){
List<Pessoa> listaPessoa = null;
List<String> queryDinamica = new ArrayList<String>();
if(nome != null){
queryDinamica.add("lower(pessoa.nome) like concat('%',lower(#{nome}),'%')");
}
if(situacao != null){
queryDinamica.add("lower(pessoa.situacao.situacaoAtual) like concat('%',lower(#{situacao}),'%')");
}
try{
EntityQuery<Pessoa> entityQuery = new EntityQuery<Pessoa>();
entityQuery.setEntityManager(entityManager);
entityQuery.setEjbql(" FROM Pessoa pessoa");
entityQuery.setRestrictionExpressionStrings(queryDinamica);
listaPessoa = entityQuery.getResultList();
}catch(NoResultException noresultex) {
} catch(NonUniqueObjectException nouniqueex) {
}
nome = null;
situacaoAtual = null;
return listaPessoa;
}
O código acima funciona até certo ponto.
Vou dar um exemplo e vôcês vão entender:
Tabela Pessoa
Nome -------------- Situacao
Fulano1------------- Ativo
Beltrano2----------- Ativo
Ciclano3------------ Ativo
quando digito no meu campo ‘Ful’ ele pesquisa e me traz corretamente o resultado. Só que quando eu digito ‘Fulano’ ele não me retorna nada. Percebi que a partir de 4 digitos ele não me retorna nada. Mesma coisa pros outros.
como posso resolver esse problema?