Подтвердить что ты не робот

% Like% Query in spring JpaRepository

Я хотел бы написать подобный запрос в JpaRepository но он ничего не возвращает:

LIKE '%place%' -its не работает.

LIKE 'place' работает отлично.

Вот мой код:

@Repository("registerUserRepository")
public interface RegisterUserRepository extends 
JpaRepository<Registration,Long>{

    @Query("Select c from Registration c where c.place like:place")
     List<Registration> findByPlaceContaining(@Param("place")String place);
}
4b9b3361

Ответ 1

Для запроса JPA для данных spring требуются символы "%", а также пробел char, следующий за like в вашем запросе, как в

@Query("Select c from Registration c where c.place like %:place%").

Cf. http://docs.spring.io/spring-data/jpa/docs/current/reference/html.

Вы можете избавиться от аннотации @Query alltogether, поскольку это похоже на стандартный запрос (автоматически реализуемый прокси-серверами spring); т.е. используя одиночную линию

List<Registration> findByPlaceContaining(String place);

.

Ответ 2

Вам вообще не нужна аннотация @Query.

Вы можете использовать только следующие

    @Repository("registerUserRepository")
    public interface RegisterUserRepository extends JpaRepository<Registration,Long>{

    List<Registration> findByPlaceIgnoreCaseContaining(String place);

    }

Ответ 3

Вы также можете реализовать подобные запросы, используя поддерживаемое Spring Data JPA ключевое слово "Conisting".

List<Registration> findByPlaceContaining(String place);

Ответ 4

Для вашего случая вы можете напрямую использовать методы JPA. Это как ниже:

Содержит: выберите... как%: место%

List<User> findByPlaceContainingIgnoreCase(String place);

здесь IgnoreCase поможет вам найти элемент, игнорируя регистр.

Вот несколько связанных методов:

  1. Нравится findByPlaceLike

    … Где x.place нравится? 1

  2. Начиная с findByPlaceStartingWith

    … Где x.place как? 1 (параметр связан с добавленным%)

  3. EndingWith findByPlaceEndingWith

    … Где x.place, как? 1 (параметр связан с добавленным%)

  4. Содержит findByPlaceContaining

    … Где x.place как? 1 (граница параметра обернута в%)

Больше информации, просмотрите эту ссылку и эту ссылку

Надеюсь, что это поможет вам :)

Ответ 5

У вас может быть одна альтернатива использования заполнителей:

@Query("Select c from Registration c where c.place LIKE  %?1%")
List<Registration> findPlaceContainingKeywordAnywhere(String place);

Ответ 6

при вызове функции я использую: findByPlaceContaining("%" + place);

или: findByPlaceContaining(place + "%");

или: findByPlaceContaining("%" + place + "%");

Ответ 7

Попробуй это.

@Query("Select c from Registration c where c.place like '%'||:place||'%'")

Ответ 8

ответ точно будет

-->' @Query("select u from Category u where u.categoryName like %:input%")
     List findAllByInput(@Param("input") String input);

Ответ 9

@Query(value = "select * from lcc_course lc where ((lc.fullname Like %?1%) or (lc.shortname Like %?1%) or (lc.idnumber Like %?1%))", nativeQuery = true)

public List<LCCCourse> findAllCourseByKeyword(String keyword);