sql >> Database teknologi >  >> RDS >> PostgreSQL

Dvalebrug af PostgreSQL-sekvens påvirker ikke sekvenstabellen

Jeg havde samme problem. Det er relateret til id-allokeringsstrategierne i Hibernate. Når du vælger GenerationType.SEQUENCE , Hibernate bruger HiLo-strategi, som tildeler ID'er i blokke på 50 som standard. Så du kan udtrykkeligt indstille allokationsstørrelse værdi som denne:

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

Jeg har dog også hørt meninger om, at brug af HiLo-strategi med allocationSize=1 er ikke en god praksis. Nogle mennesker anbefaler at bruge GenerationType.AUTO i stedet når du skal håndtere databasestyrede sekvenser

Opdatering: Jeg endte med at gå med allocationSize=1, og tingene ser ud til at fungere, som jeg forventer nu. Min ansøgning er sådan, at jeg alligevel ikke har brug for blokke af ID'er, så YMMV.



  1. Tæl forekomsten af ​​DISTINCT-værdier

  2. SQL Server:Den mørke side af NVARCHAR

  3. hvad er en god måde at horisontal shard i postgresql

  4. SQLite JSON_TREE()