3

我在我的应用程序中使用带有 JDBC 的 micronaut-data(没有休眠) 我需要使用 Oracle DB 序列生成我的主键值

根据他们的官方文档(https://micronaut-projects.github.io/micronaut-data/1.0.x/guide/#jdbcSection: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) 处为空

4

1 回答 1

0

尚不支持序列生成器,但在 TODO 列表中

于 2019-10-15T10:23:02.517 回答