org.hibernate.QueryException: пробел не допускается после префикса параметра ':' - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь выполнить запрос, но получил Устранено исключение, вызванное выполнением обработчика: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: пробел не допускается после префикса параметра ':'. Я сделал, как советовали здесь Как использовать оператор присваивания MySQL (: =) в собственном запросе гибернации? и здесь : Исключение гибернации при обнаружении mysql: = operator Но то же самое. спящий вариант 5.2.17. финал

ClientRepository.java

@Repository
public interface ClientRepository extends JpaRepository<Client, Long>, JpaSpecificationExecutor<Client> {
@Query( value = "select * from client where center_id in\n" +
    "(select  id  from    (select * from center  order by parent_center_id, id) center_sorted,  (select @pv=:centerId) initialisation\n" +
    "where   find_in_set(parent_center_id, @pv) and  length(@pv:=concat(@pv, ',', id))) or center_id=:centerId;" ,nativeQuery = true)

Page<Client> findAllByCenterId(@Param("centerId") Long centerId, Pageable pageable) ;

}

1 Ответ

0 голосов
/ 09 января 2019

Раньше при использовании оператора присваивания в Native Query Hibernate выдавал исключение. Hibernate поддерживает экранирование символа двоеточия, чтобы он не рассматривался как параметр. Итак, Вам нужно убежать с обратной косой чертой . : " \\: = "

Обратите внимание, что пробелы не допускаются до и после ссылочного заполнителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...