我正在开发三种环境的应用程序。 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相关的任何内容,但为什么它从序列中读取值。