Как использовать параметры запроса с лимитом и интервалом в данных весны jpa с аннотацией запроса - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть собственный запрос, который будет использоваться в аннотации @Query весной. Проблема в том, что я не могу передать параметры для нестандартных предложений, таких как LIMIT AND INTERVAL.

1) Можно ли передать параметры для LIMIT в аннотации. 2) Что такое программный эквивалент c в JPA. Есть ли у него интерфейс запроса, который можно использовать?

@Query(value = "SELECT * FROM scheduler sch where timestamp < (CURRENT_TIMESTAMP + interval '1 seconds') FOR UPDATE SKIP LOCKED LIMIT 5",nativeQuery = true)

Кроме того, предложение limit и interval не должно изменяться для каждого запроса, а должно устанавливаться при запуске jvm.

1 Ответ

0 голосов
/ 06 февраля 2020

Два шага 1. Используйте Pageable pageable в качестве параметра в сигнатуре вашего метода 2. Создайте объект PageRequest и вызовите метод репозитория, передав объект pageRequest.

PageRequest pageRequest=new PageRequest(0,5); // 0 is page (used to calculate offset) and 5 is size (limit).

Передайте pageRequest объект для метода.

Для INTERVAL, если вы используете секунды, используйте как показано ниже.

@Query(value = "SELECT * FROM scheduler sch where timestamp < (CURRENT_TIMESTAMP + ((interval '1 seconds') * :seconds)) FOR UPDATE SKIP LOCKED",nativeQuery = true)

Передайте :seconds в качестве другого параметра.

Для параметров чтобы быть постоянным, вы можете создать public static final переменную.

...