Eu gostaria de escrever uma consulta similar, JpaRepository
mas não está retornando nada:
LIKE '%place%'
-não está funcionando.
LIKE 'place'
funciona perfeitamente.
Aqui está o meu código:
@Repository("registerUserRepository")
public interface RegisterUserRepository extendsJpaRepository<Registration,Long> {
@Query("Select c from Registration c where c.place like :place")
List<Registration> findByPlaceContaining(@Param("place")String place);
}
java
jpa
spring-data-jpa
Sudeep cv
fonte
fonte
like '%:place%'
com'
e não obtinha nenhum resultado, porque o Hibernate adiciona'
s às strings sozinho.Você realmente não precisa do
@Query
anotação.Você pode apenas usar o seguinte
fonte
@Query()
é obrigatório, certo? Com essa abordagem, eu teria que fazer comor
que não fosse realmente uma solução adequada para esse caso:findByField1OrField2Containg(String phraseForField1, String phraseForField2)
Você também pode implementar consultas semelhantes usando a palavra-chave com suporte do Spring Data JPA "Contendo" .
fonte
Para o seu caso, você pode usar métodos JPA diretamente. É como abaixo:
Contendo: select ... like%: place%
aqui, IgnoreCase irá ajudá-lo a pesquisar o item ignorando o caso.
Usando @Query em JPQL :
Aqui estão alguns métodos relacionados:
Gostar
findByPlaceLike
… Onde x.local gosta? 1
Começando com
findByPlaceStartingWith
… Onde x.place like? 1 (parâmetro vinculado com% anexado)
EndingWith
findByPlaceEndingWith
… Onde x.place like? 1 (parâmetro vinculado a% prefixado)
Contendo
findByPlaceContaining
… Onde x.place like? 1 (limite de parâmetro envolvido em%)
Mais informações, veja este link , este link e este
Espero que isso ajude você :)
fonte
Você pode ter uma alternativa de usar marcadores de posição como:
fonte
Experimente isso.
fonte
something=:place
eanother like %:place%
em consulta.quando chamo função, eu uso:
findByPlaceContaining("%" + place);
ou:
findByPlaceContaining(place + "%");
ou:
findByPlaceContaining("%" + place + "%");
fonte
resposta exatamente será
fonte
Solução encontrada sem
@Query
(na verdade tentei qual é "aceita". No entanto, não funcionou).Tem que voltar em
Page<Entity>
vez deList<Entity>
:IgnoreCase
parte foi crítica para conseguir isso!fonte