Получить следующее значение последовательности в postgres, используя JPA, а не собственный запрос - PullRequest
1 голос
/ 13 марта 2019

У меня есть последовательность, созданная с использованием flyway в postgres, которая должна начинаться с 10000.

Я хочу получить следующее значение последовательности, используя JPA, а не собственный запрос, так как у меня разные платформы БД, работающие на разных облачных провайдерах.

Я не могу найти запрос JPA для получения следующего значения последовательности, перенаправьте меня на нужную страницу, если я уже что-то упустил ..

Спасибо за любую помощь в этой области, хотя уже!

P.S .: Я нашел эту ссылку, которая помогает мне делать то же самое с собственным запросом. последовательность postgresql nextval в схеме

1 Ответ

0 голосов
/ 14 марта 2019

Я не думаю, что это возможно прямым путем.

JPA не знает о последовательностях. Только реализация знает о них и использует их для создания идентификаторов.

Я вижу следующие варианты, чтобы заставить его работать в любом случае:

  1. создать представление в базе данных с одной строкой и одним столбцом, содержащим следующее значение. Вы можете запросить это с собственным SQL, который должен быть одинаковым для всех баз данных, поскольку это тривиальный выбор.
  2. Создайте фиктивную сущность, используя последовательность для генерации идентификатора, сохраните новый экземпляр и дайте JPA заполнить идентификатор. Ужасный обходной путь, но чистый JPA.
  3. Укусите маркер и создайте простой класс, который предоставляет правильный собственный оператор SQL для использования в текущей среде и выполняет его с помощью JdbcTemplate.
...