java - 从数据库序列中获取下一个值
问题描述
我在数据库中有一个序列。我需要获取增量值。我编写了仅支持 sql 的查询。
@Query(value = "SELECT nextval('sequence')", nativeQuery = true)
查询工作正常。但我需要编写查询以获取 JPQL 中的序列号(同时支持 SQL 和 oracle 数据库)
解决方案
如果只需要支持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();
这当然有点痛苦,但这就是注释的工作方式。
推荐阅读
- python - 如何将缓存设置导入views.py
- code-generation - Faktor-IPS 代码生成器删除注释
- wordpress - 如何将自定义链接而不是 http 添加到 Wordpress 菜单?我想添加链接 viber://add?number=0000000000
- sql - 从多个连接中替换 null 的案例语句帮助
- html - 覆盖浏览器的自定义默认颜色设置
- python - 如何分别对每个组(X,Y)的总和进行总计数并删除任何在 python pandas 上为零的组?
- wpf - 如何使用数据触发器停止自定义情节提要?
- python - 如何将此代码添加到员工的工资中作为列表的一部分
- python - 如何轻松地在 matploltib 图中定位图例?
- f# - FSharpPlus 上的活动模式 trySscanf