我在数据库中有一个序列。 我需要获取递增的值。我编写了仅支持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/