![](/img/trans.png)
[英]Hibernate: @OneToMany: delete entity from “Many” side causes EntityNotFoundException
[英]Hibernate delete from onetomany
我有两个表与OneToMany关系
class ServiceProvider {
...
@OneToMany(fetch = FetchType.EAGER,mappedBy =“serviceProvider”,cascade = {CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true)@OnDelete(action = OnDeleteAction.CASCADE)private list serviceCenters; ...
}
class ServiceCenterDetails {
... //与ServiceProviderDomainMap @ManyToOne @JoinColumn(name =“SERVICE_PROVIDER_ID”)私有ServiceProvider serviceProvider的双向多对一关联;
...
}
我想删除提供行。 但我得到以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:由造成无法删除或更新父行,外键约束失败( fixoline
。 service_center_details
,约束FK_qvahoxeovx9vmwl6mcu2c0lyw
外键( SERVICE_PROVIDER_ID
)参考service_provider
( ID
))
以下是我的尝试方式
String hql = "DELETE FROM ServiceProvider WHERE id = :providerId"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setParameter("providerId",providerId); int result = query.executeUpdate();
有人可以帮忙解决它吗?
错误消息非常明确:您尝试删除的ServiceProvider
有外键引用。 首先删除ServiceCenterDetails
:
delete from ServiceCenterDetails where serviceProvider.id = :providerId
有两个铃,
为什么你正在使用@OnDelete
在使用你CascadeType.ALL
在@oneToMany
? 删除父级时, CascadeType.ALL
将删除子实体。
@OnDelete
主要用于儿童实体@ManyToOne
不是相反。
尝试任何选项并检查。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
此异常告诉您应首先删除与ServiceProviders关联的ServiceCenterDetails,然后删除ServiceProviders。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.