Вот как я использую генератор:
<id name="id" column="column_name">
<generator class="increment"/>
</id>
private Integer id;
Я вижу следующее поведение:
- создание первого объекта
- Hibernate назначаетid = 1
- удалить этот объект
- выключить сервер и перезапустить его (добавив это после ответа)
- создать второй объект
- назначает Hibernateid = 1
примечание: я ожидал, что новый номер будет равен 2, хотя 1 больше не существует.
Я проверял это только с помощью HSQLDB.
Вопрос: это ожидаемое поведение?
AFAICT в источнике, следующее число должно быть 2 https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/main/java/org/hibernate/id/IncrementGenerator.java#L68
Обновление: Согласно ответу Ральфа, если я пропущу шаг4 (не выключать сервер), он увеличивается правильно.Это потому, что при запуске устанавливается значение max (id) и после этого сохраняется в памяти.