Собственный запрос Hibernate вызывает исключение для "ORDER BY FIELD ()" - PullRequest
0 голосов
/ 18 марта 2020

У меня есть проект весенней загрузки (версия: 2.0.0.M1) , где я использую MySQL DB.

Мой пользовательский репозиторий расширяется JpaRepository<UserEntity, Integer>. Следующий метод вызывает исключение после обновления моей весенней загрузочной версии до 2.xxRELEASE:

@Query(value = "Select * from user as u where u.is_deleted = FALSE order by field (u.id, :idList)",
nativeQuery = true)
Page<UserEntity> findNonDeletedOrderByIdList(@Param("idList") List<Integer> idList, Pageable pageable);

Исключение:

java .lang.IllegalArgumentException: Невозможно разрешить данный параметр имя [idList] для ссылки на QueryParameter

Пожалуйста, помогите мне.

Примечание: Может дублироваться с Критерии гибернации для sql ЗАКАЗАТЬ ПО ПОЛЕ

ОБНОВЛЕНИЕ:

Не знаю, почему после вставки AND u.id IN (:idList) до order by работает

@Query(value = "Select * from user as u where u.is_deleted = FALSE AND u.id IN (:idList) order by field (u.id, :idList)", nativeQuery = true)
Page<UserEntity> findNonDeletedOrderByIdList(@Param("idList") List<Integer> idList, Pageable pageable);

Кто-нибудь может это объяснить?

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Не знаю, почему после вставки AND u.id IN (:idList) перед order by работает

@Query(value = "Select * from user as u where u.is_deleted = FALSE AND u.id IN (:idList) order by field (u.id, :idList)", nativeQuery = true)
Page<UserEntity> findNonDeletedOrderByIdList(@Param("idList") List<Integer> idList, Pageable pageable);

0 голосов
/ 18 марта 2020

Если я понимаю вашу проблему, я думаю, что ваш SQL недействителен.

Порядок не может иметь параметр

Попробуйте только это:

@Query(value = "Select * from user as u where u.is_deleted = FALSE order by u.id ASC, nativeQuery = true)
Page<UserEntity> findNonDeletedOrderByIdList(Pageable pageable);
...