java - 从数据库序列中获取下一个值

标签 java sql oracle hibernate jpql

我在数据库中有一个序列。 我需要获取递增的值。我编写了仅支持sql的查询。

@Query(value = "SELECT nextval('sequence')", nativeQuery = true)

查询工作正常。但我需要编写查询来获取 JPQL 中的序列号(支持 SQL 和 Oracle 数据库)

最佳答案

如果只需要支持Oracle SQL,可以这样写:

SELECT sequence.nextval FROM dual

如果您必须支持多个 RDBMS,则需要使用以编程方式配置的 native 查询,或者使用类似 jOOQ 的内容。 (免责声明,我为供应商工作),或者每种方言都有一个方法,每个方法都带有 @Query 注释,例如:

@Query(value = "SELECT nextval('sequence')", nativeQuery = true)
int getPostgreSQLSequenceNextValue();

@Query(value = "SELECT sequence.nextval FROM dual", nativeQuery = true)
int getOracleSequenceNextValue();

这当然有点痛苦,但这就是注释的工作原理。

关于java - 从数据库序列中获取下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002754/

相关文章:

sql - 如何在 SQL Server 中使用存储过程更新表

oracle - 如何将 DATE 类型的参数传递给函数

java - Spring JMS 消息监听器容器

java - 使用 JCA/JCE 数据加密后清理内存

java - 使用 hibernate 将字符串 > 4000 转换为 CLOB

oracle - 如何在Docker中连接到外部Oracle数据库

oracle - Grails 2.4.5配置Oracle连接器

java - 包不存在 - JAVA

sql - 更新具有不同 where 条件的多行查询?

mysql - 如何选择组中最小值的行,同时还使用 where 子句