gpt4 book ai didi

java - JPA/Ebean - 使用 PostgreSQL 强制 @Id 严格递增 +1

转载 作者:行者123 更新时间:2023-12-01 12:20:27 27 4
gpt4 key购买 nike

我有以下模型:

public class Parameter extends Model {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long id;
}

save()创建的记录如下所示:

play=> select id from parameter;
id
----
1
2
3
4
5
21
(6 rows)

有没有一种方法可以告诉 JPA 始终将 id 递增 1,而不是随机跳转到 21?

最佳答案

您所观察到的内容(跳转到 21)很可能是 4.0.5 之前的 Ebean 的实现细节。 Ebean 在序列上使用“提前获取”机制。 4.0.5 之后,Ebean 默认切换为使用 Postgres SERIAL(因此默认情况下,在 4.0.5 之后,您不会在 Ebean/Postgres 中看到这一点)。引用:https://github.com/ebean-orm/avaje-ebeanorm/issues/97

综上所述,“精确递增 1”是您通常希望避免的事情,因为它会成为并发问题(避免使自动增量 ID 成为事务性的,因为这会引入争用)。当您需要“精确递增一”语义(例如支票号码等)时,您可以考虑提前批量创建。

关于java - JPA/Ebean - 使用 PostgreSQL 强制 @Id 严格递增 +1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com