如何在JPA中使用不同的序列名称/标识

时间:2018-06-15 12:05:22

标签: java oracle jpa eclipselink

我正在开发三种环境的应用程序。 test,int和production db。

如果我在SQL开发人员中观察主键生成的SQL

,我有一个表
  

ID“默认为IDENTITY MINVALUE 1 MAXVALUE生成的数字   9999999999999999999999999999通过1个CACHE 1开始增量20   NOORDER NOCYCLE NOT NULL ENABLE,

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

  

“模式”。 “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

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

0 个答案:

没有答案