好吧,我不是 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)
也许我以后可以去手动调整默认值,但是你有什么想法我可以告诉hibernate自动定义这样的表吗?是否有一种方法可以推送我自己的创建表 sql 策略,该策略会为 id 列发出这样的代码(未经测试的 SQL 语法):
id bigint NOT NULL DEFAULT = nextval('my_global_sequence'::regclass)
请注意,我想坚持使用 IDENTITY 策略,因为我想避免任何“hi/lo 乘以分配大小缓存序列”的策略。有时我需要通过 pgAdmin 插入一些手动行,而不会冒与休眠发生任何 id 冲突的风险。所有其他策略对我来说似乎都是魔法(= 我不明白它们)。