В Spring Boot Native Query не работает разбиение на страницы

0

У меня есть запрос на разбивку по страницам. Я передаю страницу и размер ass? Page = 0 & size = 5. Но не получить никакого результата. Это мой запрос.

@Query(
    value = "SELECT *, 
            ( 6371 * acos( 
                cos( radians(:lat) ) 
                * cos( radians( latitude ) )
                * cos( radians( longitude ) 
                    - radians(:lng) ) 
                + sin( radians(:lat) ) 
                * sin( radians( latitude ) ) ) 
            ) AS distance 
        FROM stores 
            WHERE deleted = '0' 
            HAVING distance < 20000 
            ORDER BY distance ?#{#pageable}", 
    countQuery = "select count(*) from stores where deleted = 0",
    nativeQuery = true)
    public Page<Stores> getAllNearbyStores(
        @Param("lat") double lat, 
        @Param("lng") double lng, 
        Pageable pageable
    );

Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '_binary'¬í\0sr\0 + org.springframework.data.domain.PageRequestÀùPÅÀÇ &\0' в строке 1

Теги:
spring-boot
spring-data-jpa

2 ответа

0
@Query(
value = "SELECT *,
         ( 6371 * acos(
cos( radians(:lat) )
* cos( radians( latitude ) )
* cos( radians( longitude )
- radians(:lng) )
+ sin( radians(:lat) )
* sin( radians( latitude ) ) )
) AS distance
FROM stores
WHERE deleted = '0'
HAVING distance < 20000
ORDER BY distance \n-- #pageable\n",
countQuery = "select count(*) from stores where deleted = 0",
nativeQuery = true)
public Page<Stores> getAllNearbyStores(
@Param("lat") double lat,
@Param("lng") double lng,
@PageableDefault(size = 5) Pageable pageable
);

Необходимо добавить размер по умолчанию в ** @PageableDefault (size = 5). Это решило проблему.

0

вам нужно добавить \n-- #pageable\n вместо ?#{#pageable}

Запрос:

@Query(
    value = "SELECT *,
             ( 6371 * acos(
    cos( radians(:lat) )
    * cos( radians( latitude ) )
    * cos( radians( longitude )
    - radians(:lng) )
    + sin( radians(:lat) )
    * sin( radians( latitude ) ) )
    ) AS distance
    FROM stores
    WHERE deleted = '0'
    HAVING distance < 20000
    ORDER BY distance \n-- #pageable\n",
    countQuery = "select count(*) from stores where deleted = 0",
    nativeQuery = true)
    public Page<Stores> getAllNearbyStores(
    @Param("lat") double lat,
    @Param("lng") double lng,
    Pageable pageable
    );

вы можете получить подробную информацию здесь

  • 0
    Добавление @PageableDefault (size = 5) для запроса тренировки для меня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню