PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O uso de hibernação da sequência do PostgreSQL não afeta a tabela de sequências


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.