что делает все немного разумнее.

я есть объект, определенный с помощью сгенерированного последовательности первичного ключа:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_key_gen")
@SequenceGenerator(name = "id_key_gen", sequenceName = "id_key_seq")
@Column(name = "id", unique = true, nullable = false)
public int getId() {
    return this.id;
}

Я использую PostgreSQL, и этот ключ определяется как последовательный. По данным PostgreSQL

select last_value from id_key_seq;

возвращается

1603.

Когда я делаю create (), чтобы сохранить экземпляр этой сущности, я вижу следующее в моих журналах (несвязанные вещи отредактированы):

05 15: 15: 26.948 org.hibernate.id.enhanced.SequenceStructure [DEBUG] - Получено значение последовательности: 1604

05 15: 15: 26.948 org.hibernate.event.def.AbstractSaveEventListener [DEBUG] - сгенерированный идентификатор: 1554, с использованием стратегии: org.hibernate.id.enhanced.SequenceStyleGenerator

Последующие операторы вставки SQL ссылаются на значение 1554, а не на то, что онодолжен использовать 1604 (на основе значения, возвращенного из SequenceStructure. Откуда Hibernate получил 1554?

Мне кажется, что в Hibernate есть ошибка - SequenceStructure знает правильное следующее значение, но оно не используется. Есть идеи, как решить эту проблему?

К вашему сведению: я знаюэта страница, которая говорит использовать GenerationType.AUTO потому что "Hibernate люди полностью испортили это", но нет ничего кроме этого не очень полезного утверждения.

Ответы на вопрос(1)

Ваш ответ на вопрос