繁体   English   中英

休眠单向一对多关系导致重复

[英]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'

我有两个实体:

  • Form292车辆
  • 访问区域理由

两者的关系如下:

在 Form292Vehicle 实体中:

 @DiffIgnore
 @JsonIgnore
 private List<AccessAreaJustification> accessareaJustifications;

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

当应用程序运行时,会创建一个包含每个实体 ID 的连接表

该表将所有实体的Ids 保留为一种形式292Vehicle Id 可以有多个accessJustifications Ids。

当用户更新申请表并执行保存时会出现问题。 即使用不同的 Id 创建一个重复的应用程序并执行保存。

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

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

得到的错误解决方案与 List 或 Set 都不对应。 这是两个事务试图在数据库上为 Object accessareaJustifications 提交相同的条目。 当一个事务锁定插入而另一个事务执行相同操作时,就会发生这种情况。 所以当数据库提交事务时,发现重复条目​​。

暂无
暂无

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

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