Я обнаружил последовательности в своем проекте JPA с использованием eclipselink, Spring и DB не генерировались непрерывно.JPA, похоже, извлекает следующие кэшированные порядковые номера, даже если текущие порядковые номера не запускаются.
моя последовательность создана этим оператором
create or replace sequence MYSCHEMA.SEQ_MY_ID
as integer
start with 1 increment by 1;
и кэш последовательности равен 20.
Моему приложению потребуется два порядковых номера для столбца MY_ID при каждом запуске.Я ожидаю, что последовательность будет выглядеть следующим образом:
RUN #1
1
2
RUN #2
3
4
Но на самом деле сгенерированные порядковые номера выглядят так:
RUN #1
1
21
RUN #2
2
3
RUN #3
22
41
В данный момент одновременно выполняется два потока для запроса последовательности.Но последовательность должна генерироваться непрерывно, даже в многопоточной среде.Почему используется следующее кэшированное значение?Как я могу понять, кто виноват?DB2, JPA или Spring.