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

时间:2019-05-06 09:52:23

标签: java sql oracle hibernate jpql

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

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

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

1 个答案:

答案 0 :(得分:1)

如果只需要支持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();

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