Spring Data JPA: @Query problema no like com parametros

2 respostas
wfuertes

Olá Pessoal.

Estou tendo alguns problemas ao usuar o Spring Data JPA, para criar meus repositórios em principal com queries que usem like, consideremos a interface abaixo:

public interface UserRepository extends JpaRepository<User, Integer> {
    @Query("select u from User as u where u.login like %:login%")
    List<User> filterByLogin(@Param("login") String login);
}

A parte em negrito [%:login%] é o que eu não estou sabendo escrever, e por isso estou recebendo a seguinte exception:
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: % near line 1, column 76 [select u from com.togoworks.base.common.model.User as u where u.login like %:login%]

Bom uma solução para o problema foi escrever a query assim:

@Query("select u from User as u where u.login like :login")
List<User> filterByLogin(@Param("login") String login);

E quando uso o método eu passo os % que preciso para o like, da seguinte forma: filterByLogin("%texto%");
Desta forma tudo funciona bem, porém gostaria de saber se tem como resolver isso já declaração do @Query como no primeiro caso.

Deste de já obrigado a todos.

2 Respostas

romarcio

Tenta assim:@Query("select u from User as u where u.login like '%' + :login + '%' ")

wfuertes

Olá romarcio, foi quase isso, mas dai foi só substituir o + por || operador padrão de concatenação padrão do SQL.

@Query("select u from User as u where u.login like '%' || :login || '%' ")

Dai deu certo. Grato!

Criado 31 de janeiro de 2012
Ultima resposta 31 de jan. de 2012
Respostas 2
Participantes 2