oracle - 将 micronaut-data 与 JDBC 一起使用时如何获取 DB 序列值
问题描述
我在我的应用程序中使用带有 JDBC 的 micronaut-data(没有休眠) 我需要使用 Oracle DB 序列生成我的主键值
根据他们的官方文档(https://micronaut-projects.github.io/micronaut-data/1.0.x/guide/#jdbc)Section:9.1.4.1 SQL Annotations
仅支持部分 JPA 注释,我没有在列表中找到 @GeneratedValue 和 @SequenceGenerator(所以不确定这些是否支持)
此外,医生说,
第 9.1.4.2 节 ID 生成 如果您希望使用序列作为 ID,您应该调用生成序列值的 SQL,并在调用 save() 之前分配它。
那么,查询 Oracle 数据库以获取序列值的最佳方法是什么?(因为与 JPA 不同,这里没有任何会话/实体管理器)。
已经尝试使用 JPA 注释生成序列:
@GeneratedValue 和 @SequenceGenerator
还使用,
@GenerateValue 存在于 micronaut 数据库中 (io.micronaut.data.annotation.GeneratedValue)
示例代码:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ") @SequenceGenerator(sequenceName = "EMPLOYEE_ID_SEQ", allocationSize = 1, name = "ID_SEQ")
private Long employeeId;
上面的代码失败了:
引起:java.lang.NullPointerException:在 oracle.jdbc.driver.OraclePreparedStatement.setupDbaBindBuffers(OraclePreparedStatement.java:3194) 处为空
解决方案
尚不支持序列生成器,但在 TODO 列表中
推荐阅读
- javascript - 使用 Alpine JS Persist Plugin 在刷新/重新访问页面后记住活动的切换/选项卡
- revit-api - 行太短 - Revit API 中的错误,但在 Revit UI 上手动工作
- python - 在列内添加逗号分隔值
- clojure - REPL 和 jar 中的 Tika Parser 行为不同
- oracle - >=(日期)的 Where 子句中的 PLSQL 案例
- c# - OrchestrationRuntimeStatus 枚举序列化或反序列化
- amazon-web-services - AWS 专用网络端口转发
- python - 如何在 Pydantic 的验证器方法中访问 **kwargs
- c# - Blazor:在子组件中显示父组件的内容
- javascript - 在strapi中导入嵌套的json