sql >> Databasteknik >  >> RDS >> PostgreSQL

Viloläge användning av PostgreSQL-sekvensen påverkar inte sekvenstabellen

Jag hade samma problem. Det är relaterat till id-allokeringsstrategierna för Hibernate. När du väljer GenerationType.SEQUENCE , Hibernate använder HiLo-strategin som tilldelar ID:n i block om 50 som standard. Så du kan uttryckligen ställa in allocationSize värde så här:

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

Men jag har också hört åsikter om att använda HiLo-strategi med allocationSize=1 är inte en bra praxis. Vissa rekommenderar att du använder GenerationType.AUTO istället när du har att göra med databashanterade sekvenser

Uppdatering: Det slutade med att jag fick allocationSize=1, och saker och ting verkar fungera som jag förväntar mig nu. Min applikation är sådan att jag egentligen inte behöver block med ID i alla fall, så YMMV.



  1. REMAINDER() Funktion i Oracle

  2. Skillnad mellan två datum i MySQL

  3. Kan du ha if-then-else logik i SQL?

  4. SQL Oracle Räknekluster