2016-07-06 3 views
0

Я разрабатываю приложение spring-data-jpa. Я провел репозиторий с findBy, но не работает, когда смотрю контент с акцентом. Кто-нибудь знает, почему? Я использую следующие:Spring JPA findBy accent

Page<Dades> findByNomcomercialIgnoreCaseContaining (@Param ("nomcom") String nomcom, Pageable pageable); 

База данных Oracle.

Спасибо за ваш интерес.

+0

Я не думаю, что вам нужна аннотация параметра, если вы пытаетесь создать запрос из имени метода, если хотите использовать аннотацию param, тогда вам нужно будет @query поверх метода. Также будет приятно видеть журналы ошибок и сущность. –

ответ

0

@Param не требуется. если у вас есть какие-либо запрос, то есть, если вы используете @Query, то мы должны использовать @param передать определенное значение для query.Below Сопутствующие вы можете проверить, как использовать @Query и @param

@Query("SELECT t.title FROM Todo t where t.id = :id") 
String findTitleById(@Param("id") Long id); 

, если вы не Добавив эти использование аннотаций в вашем хранилище слой

@Transactional 
@Repository 

Проверьте еще одна вещь, т.е.

@Transactional 
    @Repository 
    public interface IXyzRepository extends CrudRepository<ABC,Integer>{ 
    //some methods you have 
    } 

ли первичный идентификатор класса ABC имеет тип Integer

0

Это потому, что ignoreCase не имеет дело с акцентами. Он сравнивает только String после их верхнего. См. documentation для получения дополнительной информации.

Я не знаю простого решения игнорировать акценты с помощью Spring Jpa. Вы co либо:

  1. Убрать этот параметр в запросе, и фильтровать результат в Java после (сравнения строк после выполнения org.apache.commons.lang3.StringUtils.stripAccents).
  2. Используйте пружинные характеристики Jpa. Опять же, он предоставляет только такие функции, как upper, like, ... поэтому вам нужно написать свои собственные, в зависимости от того, какую базу данных вы используете.
Смежные вопросы