org.hibernate.QueryException: пробел не допускается после префикса параметра ':'
Я пытаюсь выполнить запрос, но получил исключение Resolved, вызванное выполнением обработчика: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: пробел не разрешен после префикса параметра ':' . Я сделал, как советовали здесь Как я могу использовать оператор присваивания MySQL (:=) в спящем запросе Hibernate? и здесь: Hibernate исключение при обнаружении оператора mysql:= Но то же самое. гибернация версия 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 ответ
Ранее, при использовании оператора присваивания в Native Query, Hibernate выдавал исключение.Hibernate поддерживает экранирование символа двоеточия, чтобы не рассматривать его как параметр. Итак, вам нужно сбежать с обратной косой чертой.: "\\: ="
Обратите внимание, что пробелы не допускаются до и после ссылочного заполнителя.