首页 > 解决方案 > 如何在 JPA 中使用不同的序列名称/身份

问题描述

我正在开发三个环境的应用程序。测试,int 和生产数据库。

我有一张表,如果我在 SQL 开发人员中观察生成的 SQL 作为主键

ID" 由默认生成的数字作为标识 MINVALUE 1 MAXVALUE 9999999999999999999999999999 以 1 开始递增 1 缓存 20 NOORDER NOCYCLE 不为空启用,

如果我在桌子上看到它看起来像......

"SCHEMA"."ISEQ$$_97103".nextval

在 JPA/eclipselink 实体上,我使用了这个 ISEQ$$_97103 序列生成器,它在测试环境中工作。

但是,当我在 INT 环境中执行此操作时,它会抛出错误ISEQ$$_97103序列不存在。我观察到,它在 INT 数据库中是一个不同的名称。

当他们系统生成名称时,它们会有所不同。

我尝试使用以下链接但没有用

https://www.thoughts-on-java.org/hibernate-tips-use-auto-incremented-column-primary-key/

如何在 JPA 中指定使用系统从表中生成的身份名称?有什么办法吗?或者是强制性的,名称在三个环境中应该相同。

这是我的实体类:

@Entity
@Table(name = "T_MY_TABLE")
public class MyDataEntity implements Serializable {

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;


// other colums, getters/setters

}

我得到的错误

Internal Exception: java.sql.SQLException: ORA-02289: sequence does not exist
Error Code: 2289
Call: SELECT SEQ_GEN_IDENTITY.NEXTVAL FROM DUAL
Query: ValueReadQuery(sql="SELECT SEQ_GEN_IDENTITY.NEXTVAL FROM DUAL

我真的很想知道,我没有提到任何与序列相关的东西,但为什么它要从序列中读取值。

标签: javaoraclejpaeclipselink

解决方案


推荐阅读