使用JPA而非本地查询获取Postgres中序列的nextvalue

时间:2019-03-13 07:24:31

标签: postgresql spring-data-jpa sequence

我在postgres中使用flyway创建了一个序列,该序列应从10000开始。

我想使用JPA而不是本机查询来获取序列的下一个值,因为我在不同的云提供商处运行着不同的数据库平台。

我找不到JPA查询来获取序列的下一个值,如果我已经缺少某些内容,请重定向到正确的页面。

感谢您在该领域的任何帮助!

P.S:我发现此链接可以帮助我对本机查询执行相同的操作。 postgresql sequence nextval in schema

1 个答案:

答案 0 :(得分:0)

我认为这不可能直接实现。

JPA不了解序列。 只有实现才知道这些内容,并利用它们来创建ID。

我看到以下选项可以使其正常运行:

  1. 在数据库中创建一个视图,该视图具有单行和包含下一个值的单列。您可以使用本机SQL查询该查询,因为这是一个简单的选择,因此对于所有数据库都应相同。
  2. 使用用于生成ID的序列创建虚拟实体,保存新实例,然后让JPA填充ID。 可怕的解决方法,但是纯粹的JPA。
  3. 硬着头皮,创建一个简单的类,提供用于当前环境的正确的本机SQL语句,并通过JdbcTemplate执行它。