postgresql - 使用 JPA 而不是 native 查询在 postgres 中获取序列的下一个值

标签 postgresql spring-data-jpa sequence

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

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

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

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

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

最佳答案

我不认为这是可能的直接方式。

JPA 不知道序列。 只有实现知道这些并利用它们来创建 ID。

无论如何,我看到以下选项可以让它正常工作:

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

关于postgresql - 使用 JPA 而不是 native 查询在 postgres 中获取序列的下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136457/

相关文章:

sql - 向 postgresql 查询插入 JSON 数据成功,但输出意外

sql - Postgres 查询以获取两个日期之间的结果

查找满足一组条件的数字序列的算法

java - 如何在内存中嵌入 MariaDB4j 以替换 JUnit 测试中默认的 Spring DataSource?

mysql - 如何在 Spring Data JPA 排序中定义空处理?

python - 在同一语句python中打印字典和字符串对象

java - 在给定开始、结束和步骤的情况下生成 List<Double> 值序列的最佳方法?

java - PostgreSQL 异常 : syntax error

arrays - 访问复合数组元素 plpgsql

java - 用于选择特定列的 Spring Data JPA 规范