postgresql - 使用 JPA 而不是本机查询在 postgres 中获取序列的下一个值
问题描述
我在 postgres 中使用 flyway 创建了一个序列,该序列应该从 10000 开始。
我想使用 JPA 而不是本机查询来获取序列的下一个值,因为我在不同的云提供商处运行了不同的数据库平台。
我无法找到 JPA 查询来获取序列的下一个值,如果我已经遗漏了某些内容,请将我重定向到正确的页面..
感谢您在该领域的任何帮助!
PS:我发现这个链接可以帮助我对本机查询做同样的事情。 模式中的postgresql序列nextval
解决方案
我认为这是不可能的。
JPA 不知道序列。只有实现知道这些并利用它们来创建 ID。
我看到以下选项可以让它正常工作:
- 在数据库中创建一个包含下一个值的单行和单列视图。您可以使用对所有数据库都应该相同的本机 SQL 进行查询,因为它是一个简单的选择。
- 使用 id 生成序列创建一个虚拟实体,保存一个新实例并让 JPA 填充 id。一个可怕的解决方法,但纯 JPA。
- 咬紧牙关创建一个简单的类,该类提供正确的本地 SQL 语句以用于当前环境并通过
JdbcTemplate
.
推荐阅读
- keycloak - Keycloak 作为具有自定义身份验证器的 IDP 无法读取 http POST 参数 login_hint
- c# - WPF 文本框默认大小太大?
- javascript - useState 不会更新状态
- haskell - 找不到模块“Text.HTML.TagSoup”
- bootstrap-4 - 网格列的 CSS 无法正确显示
- microsoft-graph-api - 无法查询根文件夹的更改
- python-3.x - Pyenv:如何在重建 python 后“重建”virtualenvs
- sql-server - 如何使用之前的退货来确定我是否可以通过 Powerhsell 发送警报?
- php - 如何在数组中使用键号作为值?
- regex - 为什么正则表达式匹配符号“m”