我在数据库中有一个序列。 我需要获取增加的值。我编写了仅支持sql的查询。
@Query(value = "SELECT nextval('sequence')", nativeQuery = true)
查询工作正常。但是我需要编写查询以获取JPQL中的序列号(同时支持SQL和oracle数据库)
答案 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();
这当然很痛苦,但这就是注释的工作方式。