繁体   English   中英

Hibernate和Oracle:违反主键约束

[英]Hibernate and Oracle: Primary Key constraint violation

在我的Web应用程序中,我具有在相同实体(例如商品,客户...等)上工作的多个计划服务。 如果我一次运行一个服务没有问题,但是当我运行两个服务时,由于违反了主键唯一性约束,我会收到错误消息。 作为主键,我使用生成的Long值:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
public Long getId() {
    return id;
}

每个服务都从txt文件读取数据,创建其实体,每20个实体在休眠会话后执行一次刷新操作,然后执行清除操作。 仅在服务执行结束时才提交会话。

我该如何解决?

Oracle仅支持生成密钥的序列。 向您的数据库添加一个序列:

CREATE SEQUENCE ARTICLE_SEQ;

将注释更改为:

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="articleSequence")
@SequenceGenerator(name="articleSequence", sequenceName="ARTICLE_SEQ",allocationSize=1) 

最好为每个表/类型使用单独的序列。

在DB中创建序列,并像@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_NAME")一样使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM