首页 > 解决方案 > 从数据库序列中获取下一个值

问题描述

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

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

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

标签: javasqloraclehibernatejpql

解决方案


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

SELECT sequence.nextval FROM dual

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

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

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

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


推荐阅读