2
respostas

Refinar consulta em JPQL

Como posso refinar a seguinte consulta que atualmente estou tendo uma retorno apenas quando digito a palavra inteira, mas gostaria que a consulta fosse por letra. Eis o meu código!

    @Query(value = "select * from Ajax where id like :TERMO_BUSCA_GLOBAL or engine like :TERMO_BUSCA_GLOBAL"
            + " or browser like :TERMO_BUSCA_GLOBAL or platform like :TERMO_BUSCA_GLOBAL"
            + " or version like :TERMO_BUSCA_GLOBAL or grade like :TERMO_BUSCA_GLOBAL"
            + " order by :NOME_COLUNA :DIRECAO limit :INICIAR, :QUANT_REGISTRO", 
            nativeQuery = true
    )
    List<JqueryDatatable> searchTermGlobal(
            @Param("TERMO_BUSCA_GLOBAL") String TERMO_BUSCA_GLOBAL,
            @Param("NOME_COLUNA") String NOME_COLUNA,
            @Param("DIRECAO") String DIRECAO, 
            @Param("INICIAR") int INICIAR, 
            @Param("QUANT_REGISTRO") int QUANT_REGISTRO);
2 respostas

Tente desta forma:

 @Query(value = "select * from Ajax where id like %:TERMO_BUSCA_GLOBAL% or engine like %:TERMO_BUSCA_GLOBAL%"
            + " or browser like %:TERMO_BUSCA_GLOBAL% or platform like %:TERMO_BUSCA_GLOBAL%"
            + " or version like %:TERMO_BUSCA_GLOBAL% or grade like %:TERMO_BUSCA_GLOBAL%"
            + " order by :NOME_COLUNA :DIRECAO limit :INICIAR, :QUANT_REGISTRO", 
            nativeQuery = true
    )

O caracter curinga % indica que pode ter qualquer número de caracteres antes ou depois da palavra (string) usada na busca.

Não surtiu efeito nenhum na consulta, continua o mesmo retorno!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software