【发布时间】:2020-02-04 00:04:45
【问题描述】:
我在我的应用程序中使用带有 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(策略= GenerationType.SEQUENCE,生成器=“ID_SEQ”)
@SequenceGenerator(sequenceName = "EMPLOYEE_ID_SEQ", allocationSize = 1, name = "ID_SEQ")
private Long employeeId;
以上代码失败:
原因:java.lang.NullPointerException:null 在 oracle.jdbc.driver.OraclePreparedStatement.setupDbaBindBuffers(OraclePreparedStatement.java:3194)
【问题讨论】:
标签: oracle jdbc micronaut micronaut-data