我在我的应用程序中使用带有 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) 处为空