0

我浏览了Spring CRUD 存储库:是否有 findOneByMaxXYZColumn()?Spring 数据 jpa。如果没有结果返回默认值,则查找最大值,但我从并发环境中的正确实现角度来看更多。

在我的Employee表格应用程序中,ETL 和 NiFi 等工具会将 Employee 添加到 Postgres DB 中,但是在插入 PK ID 序列时不会维护它可能是任何唯一值。

例如:Employees 的任何值,如 399、430、439、444 等。如果我们看,400 到 429 之间的 ID 没有被占用,但是当我通过 Admin UI 添加 Employee 时,在这种情况下它应该总是 445。我正在使用 Spring Boot JPA 存储库查询

Long findFirstByEmployeeIdAsc();

这样,我将获得 Max Id (员工表的 PK 列中存在的最大值),并且在将记录保存到 DB 时,我将对 ID 进行 +1。这是使用并发环境的正确方法吗?

有什么方法可以在 Jpa Repository 查询的帮助下获得 MAXID+1 值?如果我们使用它,如果发生任何异常,该 Id 会被消耗掉怎么办?

任何指针?

4

1 回答 1

0

试试这个,希望它会工作:

@Query(value = "SELECT coalesce(max(id), 0) FROM Product") \
    public Long getMaxId();
于 2020-09-08T12:03:24.500 回答