我有两个表与OneToMany关系
class ServiceProvider {
...
@OneToMany(取= FetchType.EAGER,的mappedBy ="的ServiceProvider&#34 ;, cascade = {CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true) @OnDelete(action = OnDeleteAction.CASCADE)私有 列出serviceCenters; ...
}
类ServiceCenterDetails {
... //双向多对一关联 ServiceProviderDomainMap @ManyToOne @JoinColumn(name =" SERVICE_PROVIDER_ID")private ServiceProvider 的ServiceProvider;
...
}
我正在尝试删除提供的行。但我得到以下错误:
引起:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(service_center_details
。FK_qvahoxeovx9vmwl6mcu2c0lyw
,CONSTRAINT 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();
))
以下是我正在尝试的方式
{{1}}
有人可以帮忙解决它吗?
答案 0 :(得分:0)
错误消息非常明确:您尝试删除MyClass
的外键引用。首先删除ServiceProvider
:
ServiceCenterDetails
答案 1 :(得分:0)
有两种情况,
在@OnDelete
中使用CascadeType.ALL
时,为何使用@oneToMany
?删除父项时,CascadeType.ALL
将删除子实体。
@OnDelete
主要用于@ManyToOne
的子实体。
尝试使用任何选项并检查。
答案 2 :(得分:0)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
此异常表明您应该首先删除与ServiceProviders关联的ServiceCenterDetails,然后再删除ServiceProviders。