Eu tive o mesmo problema. Está relacionado às estratégias de alocação de id do Hibernate. Quando você escolhe GenerationType.SEQUENCE , o Hibernate usa a estratégia HiLo que aloca IDs em blocos de 50 por padrão. Assim, você pode definir explicitamente allocationSize valor assim:
@Id
@SequenceGenerator(name="pk_sequence",sequenceName="entity_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
@Column(name="id", unique=true, nullable=false)
public int getId() {
return this.id;
}
No entanto, também ouvi opiniões de que usar a estratégia HiLo com allocationSize=1 não é uma boa prática. Algumas pessoas recomendam usar GenerationType.AUTO em vez disso, quando você precisa lidar com sequências gerenciadas pelo banco de dados
Atualização: Acabei indo comlocationSize=1, e as coisas parecem funcionar como eu esperava agora. Meu aplicativo é tal que eu realmente não preciso de blocos de IDs, então YMMV.