sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLシーケンスのHibernateの使用は、シーケンステーブルに影響しません

    私も同じ問題を抱えていました。これは、HibernateのID割り当て戦略に関連しています。 GenerationType.SEQUENCEを選択した場合 、Hibernateはデフォルトで50のブロックにIDを割り当てるHiLo戦略を使用します。したがって、 alllocationSizeを明示的に設定できます このような値:

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

    ただし、 alllocationSize =1でHiLo戦略を使用するという意見も聞いています。 良い習慣ではありません。 GenerationType.AUTOの使用を推奨する人もいます 代わりに、データベース管理のシーケンスを処理する必要がある場合

    更新: 最終的にallocationSize=1になりましたが、期待どおりに機能しているようです。私のアプリケーションは、とにかくIDのブロックを実際には必要としないようなものなので、YMMVです。



    1. さまざまなSQLServerインスタンスのSSMSでステータスバーの色を設定する方法-SQLServer/TSQLチュートリアルパート6

    2. PG ::ConnectionBad:fe_sendauth:パスワードが提供されていません

    3. PostgreSQL12のデータベース管理と監視

    4. pysparkシェルでjdbcを使用してpostgresに接続できません