Chciałbym napisać podobne zapytanie, JpaRepository
ale nic nie zwraca:
LIKE '%place%'
-to nie działa.
LIKE 'place'
działa świetnie.
Oto mój kod:
@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
źródło
źródło
like '%:place%'
z'
i nie było żadnych wyników, ponieważ Hibernate sam dodaje'
s do stringów.W rzeczywistości w ogóle nie potrzebujesz
@Query
adnotacji.Możesz po prostu użyć następujących
źródło
@Query()
to konieczność, prawda? Przy takim podejściu musiałbym zrobić,or
że nie jest to właściwie odpowiednie rozwiązanie w tym przypadku:findByField1OrField2Containg(String phraseForField1, String phraseForField2)
Możesz również zaimplementować podobne zapytania, używając słowa kluczowego „Containing” obsługiwanego przez Spring Data JPA .
źródło
W twoim przypadku możesz bezpośrednio użyć metod JPA. To jest jak poniżej:
Zawiera: wybierz ... jak%: miejsce%
tutaj IgnoreCase pomoże ci wyszukać element z ignorowaniem przypadku.
Korzystanie z @Query w JPQL :
Oto kilka powiązanych metod:
Lubić
findByPlaceLike
… Gdzie x.place jak? 1
Zaczynając od
findByPlaceStartingWith
… Gdzie x.place jak? 1 (parametr powiązany z dołączonym%)
EndingWith
findByPlaceEndingWith
… Gdzie x.place jak? 1 (parametr powiązany z dołączonym%)
Zawierający
findByPlaceContaining
… Gdzie x.place jak? 1 (parametr powiązany w%)
Więcej informacji, zobacz ten link , ten link i to
Mam nadzieję, że to ci pomoże :)
źródło
Możesz mieć jedną alternatywę użycia symboli zastępczych jako:
źródło
Spróbuj tego.
źródło
something=:place
ianother like %:place%
w zapytaniu.w funkcji wywołania używam:
findByPlaceContaining("%" + place);
lub:
findByPlaceContaining(place + "%");
lub:
findByPlaceContaining("%" + place + "%");
źródło
odpowiedź brzmi dokładnie
źródło
Znalazłem rozwiązanie bez
@Query
(właściwie próbowałem, które z nich jest „akceptowane”. Jednak nie zadziałało).Muszę wrócić
Page<Entity>
zamiastList<Entity>
:IgnoreCase
część była kluczowa dla osiągnięcia tego!źródło