gpt4 book ai didi

java - 无法使用 Ebean 使用 GENERATED IDENTITY 主键创建记录

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:12 26 4
gpt4 key购买 nike

我在 Oracle Database 12c 中有一个表,是使用以下 DDL 创建的:

create table customer (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(100)
);

我正在尝试使用 Ebean.save 向该表插入一行具有以下定义模型的方法:

@Entity
@Table(name = "customer")
public class Customer {

@Id
Integer id;
....

用于插入行的代码如下:

Customer customer = new Customer();
customer.setName(name);
Ebean.save(customer);

它失败并显示以下堆栈跟踪:

Caused by: java.sql.SQLSyntaxErrorException: ORA-02289: sequence does not exist

at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1054)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
....

Caused by: Error : 2289, Position : 7, Sql = select
customer_seq.nextval, a from (select level as a FROM dual CONNECT BY level <= 20), OriginalSql = select customer_seq.nextval, a from (select level as a FROM dual CONNECT BY level <= 20), Error Msg = ORA-02289: sequence does not exist

从错误中,我了解到 Ebean 正在尝试对标识列使用 Sequence 策略,但失败了。我尝试按如下方式设置 Identity 策略,但没有成功,可能是因为 Ebean 正在为 Oracle DB 使用 Sequence 策略,如所述 here .

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;

有没有办法在 Oracle 12c 表中保存一行,并使用上面使用 Ebean 定义的自动生成的标识列?我设置 IDENTITY 策略是否走在正确的轨道上?

最佳答案

这是 Ebean 中的一个错误,已在 11.10.1 中修复。发布。 bug在我的 post 之后在 github 上被报道在 Ebean 的谷歌群组上。我已经验证我可以使用此版本的 Ebean 指定自动生成的标识列,如下所示:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;

关于java - 无法使用 Ebean 使用 GENERATED IDENTITY 主键创建记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com