![](/img/trans.png)
[英]Properly Implementing a One to Many Unidirectional Relationship in 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 的连接表
该表将所有实体的Ids 保留为一种形式292Vehicle Id 可以有多个accessJustifications Ids。
当用户更新申请表并执行保存时会出现问题。 即使用不同的 Id 创建一个重复的应用程序并执行保存。
我认为问题在于 Hibernate 映射。 我可以解决这个问题吗?
您的列表可能包含重复项。 改用Set
或确保没有重复项
得到的错误解决方案与 List 或 Set 都不对应。 这是两个事务试图在数据库上为 Object accessareaJustifications 提交相同的条目。 当一个事务锁定插入而另一个事务执行相同操作时,就会发生这种情况。 所以当数据库提交事务时,发现重复条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.