sql >> Base de Datos >  >> RDS >> PostgreSQL

El uso de Hibernate de la secuencia de PostgreSQL no afecta la tabla de secuencias

Yo tuve el mismo problema. Está relacionado con las estrategias de asignación de id de Hibernate. Cuando elige GenerationType.SEQUENCE , Hibernate usa la estrategia HiLo que asigna ID en bloques de 50 por defecto. Entonces puede establecer explícitamente allocationSize valor como este:

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

Sin embargo, también escuché opiniones de que usar la estrategia HiLo con allocationSize=1 no es una buena práctica. Algunas personas recomiendan usar GenerationType.AUTO en cambio, cuando tiene que lidiar con secuencias administradas por bases de datos

Actualización: Terminé yendo con el tamaño de asignación =1, y las cosas parecen funcionar como espero ahora. Mi aplicación es tal que realmente no necesito bloques de ID de todos modos, así que YMMV.