本当にこれが欲しいかどうかは100%わかりませんが、現在は良い考えのようです。
エンティティを次のように構成します。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id = 0;
Hibernateにテーブルを生成させると、結果は次のようになります。
id bigserial NOT NULL,
CONSTRAINT test_pkey PRIMARY KEY (id)
次に、bigserialは、デフォルト値が次のbigintに変換されます。
nextval('test_id_seq'::regclass)
これで問題ありませんが、現在、すべてのテーブルに単一のシーケンスを使用することを検討しており、デフォルト値を次のようにしたいと考えています。
nextval('my_global_sequence'::regclass)
後でデフォルト値を手動で調整することもできますが、このようなテーブルを自動的に定義するように休止状態に指示する方法はありますか?id列(テストされていないSQL構文)に対して次のようなコードを発行する独自のcreate tablesql戦略をプッシュする方法はありますか?
id bigint NOT NULL DEFAULT = nextval('my_global_sequence'::regclass)
「hi/lo乗算割り当てサイズのキャッシュシーケンスが何であれ」戦略を避けたいので、IDENTITY戦略に固執したいことに注意してください。時々、hibernateとのIDの競合のリスクを冒さずに、pgAdminを介していくつかの手動行を挿入する必要があります。他のすべての戦略は私には魔法のように見えます(=私はそれらを理解していません)。