Слишком много приращений в последовательностях Oracle от JPA / Hibernate - PullRequest
3 голосов
/ 01 февраля 2012

Я использую Hibernate в своем проекте Java, у меня есть Oracle DB. В столбце идентификаторов я идентифицировал последовательность с шагом 1. Но вот как JPA / Hibernate получает nextVal из последовательности:

1   1451
2   1450
3   1402
4   1401
5   1400
6   1352
7   1351
8   1350
9    426

Вы можете видеть, что nextVal иногда получает 1, но в основном 50 или более. Я вижу даже начало последовательности 200, даже если я поставил начальное значение 1. Почему это происходит? Это нормально?

Можно ли как-нибудь уменьшить этот прирост "50"?

Редактировать: Дубликат последовательности оракула гибернации создает большой разрыв

Ответы [ 2 ]

8 голосов
/ 13 марта 2012

Я нашел это решение;

  1. Я сделал кэш последовательности как "no-cache"
  2. Я поместил "allocationSize=1" в аннотацию @SequenceGenerator свойства @Idкак было описано здесь: https://stackoverflow.com/a/5346701/169534

Проблема решена

0 голосов
/ 01 февраля 2012

Если ваша последовательность имеет размер кэша 50, вы можете увидеть эту проблему, если база данных закрывается между вашими выборками из последовательности.Оставшиеся кэшированные значения никогда не будут использоваться при завершении работы базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...