Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库序列中获取下一个值_Java_Sql_Oracle_Hibernate_Jpql - Fatal编程技术网

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

Java 从数据库序列中获取下一个值,java,sql,oracle,hibernate,jpql,Java,Sql,Oracle,Hibernate,Jpql,我在数据库中有一个序列。 我需要得到递增的值。我编写了只支持sql的查询 @Query(value = "SELECT nextval('sequence')", nativeQuery = true) 查询工作正常。但我需要编写查询以获取JPQL中的序列号(支持SQL和oracle数据库)如果您只需要支持oracle SQL,则可以编写: SELECT sequence.nextval FROM dual 如果必须支持多个RDBMS,则需要使用编程配置的本机查询,或者使用类似(免责声明,我

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

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

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

如果您只需要支持oracle SQL,则可以编写:

SELECT sequence.nextval FROM dual
如果必须支持多个RDBMS,则需要使用编程配置的本机查询,或者使用类似(免责声明,我为供应商工作)的方法,或者每个方言有一个方法,每个方言上都有一个
@query
注释,例如:

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

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

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

我不认为你能做到这一点,因为JPA支持的并非所有数据库系统都有序列。谢谢,我如何在@Query中提到方言?@madhuri:你不能在
@Query
中提到方言。我会更新我的答案来说明我的意思