1

我将 JPA 与 hibernate 一起使用,并有一个像这样定义的 bean。

@Entity
@Table(name = "ARTICLE")
@GenericGenerator(
        name = "ARTICLE_GEN",
        strategy = "sequence",
        parameters = {
                @Parameter(name = "sequence_name", value = "ARTICLE_SEQ"),
                @Parameter(name = "increment_size", value = "400"),
                @Parameter(name = "optimizer", value = "legacy-hilo")
})

多个应用程序使用同一个实体并指向同一个数据库。

问题是,我有时会在其中一个应用程序中遇到此错误:

oracle.jdbc.OracleDatabaseException: ORA-00001: unique constraint (ARTICLE.PK_2) violated

我很确定其中一个应用程序正在进入另一个应用程序序列缓存。我正在寻找最佳实践来管理具有许多应用程序上下文的序列缓存,或任何 subgestion 以改进映射。

问候,

4

2 回答 2

1

I think you have to annotate @javax.persistence.SequenceGenerator(allocationSize = 400) so that Hibernate knows it should increment by 400.

于 2020-12-11T09:14:40.417 回答
0

感谢克里斯蒂安的回答。

我们发现,这是一个不共享相同增量大小的应用程序。所以我们发现我们的密码插入了重复的键。

于 2020-12-14T10:36:50.550 回答