PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използването на хибернация на PostgreSQL последователността не засяга таблицата с последователности

Имах същия проблем. Това е свързано със стратегиите за разпределяне на идентификатори на Hibernate. Когато изберете GenerationType.SEQUENCE , Hibernate използва стратегия HiLo, която разпределя идентификатори в блокове от 50 по подразбиране. Така че можете изрично да зададете allocationSize стойност като тази:

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

Въпреки това, също съм чувал мнения, че използването на стратегията HiLo с allocationSize=1 не е добра практика. Някои хора препоръчват да използвате GenerationType.AUTO вместо това, когато трябва да се справите с управлявани от база данни последователности

Актуализация: В крайна сметка преминах с allocationSize=1 и нещата изглежда работят, както очаквам сега. Моето приложение е такова, че всъщност не ми трябват блокове от идентификатори, така че 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. Съпоставяне на тип PostgreSQL text[][] и тип Java

  2. Добавяне на външен ключ към релсов модел

  3. Търсене в индекси на изрази

  4. Postgres:Добавете ограничение, ако все още не съществува

  5. CURRENT_TIMESTAMP в милисекунди