Hibernate gerando dois IDs de sequência diferentes para inserção do PostgreSQL

Eu tenho uma entidade definida com uma chave primária gerada por sequência:

@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;
}

Estou usando o PostgreSQL, e essa chave é definida como serial. De acordo com o PostgreSQL

select last_value from id_key_seq;

retorna

1603.

Quando eu faço um create () para persistir em uma instância dessa entidade, vejo o seguinte nos meus logs (itens não relacionados editados):

05 15: 15: 26.948 org.hibernate.id.enhanced.SequenceStructure [DEBUG] - Valor da sequência obtido: 1604

05 15: 15: 26.948 org.hibernate.event.def.AbstractSaveEventListener [DEBUG] - identificador gerado: 1554, usando a estratégia: org.hibernate.id.enhanced.SequenceStyleGenerator

As instruções de inserção SQL subsequentes se referem ao valor 1554, não ao quedevemos estar usando, 1604 (com base no valor retornado da SequenceStructure. De onde o Hibernate obteve 1554?

Parece-me que o Hibernate tem um erro aqui - SequenceStructure sabe o próximo valor correto, mas não está sendo usado. Alguma ideia de como resolver isso?

FYI: Estou ciente denesta página, que diz usar o GenerationType.AUTO porque o "pessoal do Hibernate estragou tudo", mas não há muito além dessa declaração não muito útil.

questionAnswers(1)

yourAnswerToTheQuestion