Hibernate单向一对多关系导致重复

Hibernate unidirectional one to many relationship causing duplicates

你好程序员

我遇到了有关已完成保存的问题,并在日志中产生了以下错误:

> javax.faces.FacesException#{Form292VehicleComponent.saveForm292Vehicle(Form292VehicleComponent.form292Vehicle)}:
> org.springframework.dao.DataIntegrityViolationException: Duplicate
> entry '3a35781b-d2f6-46e7-a72b-605557b29cee' for key
> 'accessareaJustifications_ID'; SQL [n/a]; constraint [null]; nested
> exception is org.hibernate.exception.ConstraintViolationException:
> Duplicate entry '3a35781b-d2f6-46e7-a72b-605557b29cee' for key
> 'accessareaJustifications_ID'

我有两个实体:

两者的关系如下:

在 Form292Vehicle 实体中:

 @DiffIgnore
 @JsonIgnore
 private List<AccessAreaJustification> accessareaJustifications;

在AccessAreaJustifications中,两个字段只用来保留一个Form292Vehicle的ID,没有任何关系。这意味着Form292Vehicle与List是单向的一对多关系。

当应用程序为 运行 时,将创建包含每个实体 ID 的联接 table

table将所有实体的Id保持为一种形式292Vehicle Id可以有多个accessJustifications Id。

当用户出现问题时: 更新申请表并保存。即制作了具有不同 ID 的重复应用程序并执行了保存。

我认为问题出在 Hibernate 映射上。我可以解决这个问题吗?

您的列表可能包含重复项。请改用 Set 或确保没有重复项

获得的错误解决方案既不对应List也不对应Set。这是两个事务试图为对象访问区域理由提交数据库中的相同条目。当一个事务在插入中锁定而另一个事务正在执行相同操作时,就会发生这种情况。所以当数据库提交事务时,发现重复条目​​。