Java CockroachDB串行字段不使用JPA身份策略

Java CockroachDB串行字段不使用JPA身份策略,java,hibernate,jpa,cockroachdb,Java,Hibernate,Jpa,Cockroachdb,我正在迁移一个应用程序以使用CockroachDB,我们正在使用Java中的GeneratedValue映射和串行类型列来管理主键 id SERIAL PRIMARY KEY -- SQL @Id @GeneratedValue(strategy = GenerationType.IDENTITY) -- Java JPA 我们得到以下错误 错误:currval():关系“scm\U supply\u Center\u id\u seq”不存在 我们挖掘了

我正在迁移一个应用程序以使用CockroachDB,我们正在使用Java中的GeneratedValue映射和串行类型列来管理主键

id                   SERIAL PRIMARY KEY -- SQL

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) -- Java JPA
我们得到以下错误

错误:currval():关系“scm\U supply\u Center\u id\u seq”不存在

我们挖掘了一下,发现这是因为PostgreSQL方言试图插入最后一个id,正如您在这个链接中看到的那样


如何找到解决此问题的方法?

序列类型不受CockroachDB中序列的支持。要使用
序列
,需要显式创建它,并使用
nextval()
函数作为列的
默认值。比如说,

CREATE SEQUENCE customer_seq;

CREATE TABLE customer_list (
    id INT PRIMARY KEY DEFAULT nextval('customer_seq'),
    customer string,
    address string
);
请注意,由于额外的同步和通信要求,使用
序列
串行
会对性能产生影响。有关更多详细信息,请参阅


不过,上述情况并不能完全回答你的问题。我不知道如何使用Hibernate的显式序列。

谢谢!这是另一种选择。我通过实现一个自定义Hibernate方言来修复它,允许在insert子句中返回ID。