PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Hibernacja użycia sekwencji PostgreSQL nie wpływa na tabelę sekwencji

Miałem ten sam problem. Wiąże się to ze strategiami przydzielania id Hibernate. Kiedy wybierzesz GenerationType.SEQUENCE , Hibernate używa strategii HiLo, która domyślnie przydziela identyfikatory w blokach po 50. Możesz więc jawnie ustawić allocationSize wartość tak:

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

Chociaż słyszałem też opinie, że stosowanie strategii HiLo z allocationSize=1 nie jest dobrą praktyką. Niektórzy polecają użycie GenerationType.AUTO zamiast tego, gdy masz do czynienia z sekwencjami zarządzanymi przez bazę danych

Aktualizacja: Skończyło się na przypisaniuSize=1 i wydaje się, że teraz wszystko działa tak, jak się spodziewam. Moja aplikacja jest taka, że ​​tak naprawdę nie potrzebuję bloków identyfikatorów, więc YMMV.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimplementować priorytety w SQL (postgres)

  2. Instalacja PostgreSQL na Ubuntu dla Ruby on Rails

  3. Wybierz (pobierz) wszystkie rekordy z wielu schematów za pomocą Postgres

  4. Alternatywny format wyjściowy dla psql

  5. Jak napisać Pandas Dataframe do modelu Django