我正在使用JPA并具有以下内容:
ProductEntity
@Basic
@Column(name = "PRODUCT_ID", nullable = false, length = 128)
private String productId;
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private ProductEntity parent;
Run Code Online (Sandbox Code Playgroud)
如您所见,产品表可以有父级.有效地是父母的孩子关系.
我有一个保存在数据库中的产品,然后我添加了一些子产品,每个产品都有相同的父产品.
子产品具有ProductEntity parent =父产品;
ProductEntity parentProductEntity = ...
ProductEntity childProductEntity1 = ...
ProductEntity childProductEntity2 = ...
em.persist(parentProductEntity);
childProductEntity1.setParent(parentProductEntity);
childProductEntity2.setParent(parentProductEntity);
em.merge(childProductEntity1);
Run Code Online (Sandbox Code Playgroud)数据(它永远不会插入最后两个子行)
ID PRODUCT_ID PARENT_ID
1 1 null
2 2 1
3 3 1
Run Code Online (Sandbox Code Playgroud)
问题
然后我尝试保存每个孩子的产品.但是我收到一个错误,表明存在重复键(productId).保存子项时,它也会尝试保存父项的重复项.
引起:org.postgresql.util.PSQLException:错误:重复键值违反唯一约束"t_osm_product_product_id_uindex"
题
我如何改变我正在做的事情来成功保存每个儿童产品?
谢谢