从onetomany中删除休眠 [英] Hibernate delete from onetomany
问题描述
我有两个具有OneToMany关系的表
I have two tables with OneToMany relation
Class ServiceProvider {
class ServiceProvider {
...
@OneToMany(fetch = FetchType.EAGER,mappedBy ="serviceProvider",级联= {CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true)@OnDelete(action = OnDeleteAction.CASCADE)私人的列出服务中心;...
@OneToMany(fetch=FetchType.EAGER,mappedBy="serviceProvider", cascade={CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true) @OnDelete(action=OnDeleteAction.CASCADE) private List serviceCenters; ...
}
ServiceCenterDetails类{
class ServiceCenterDetails {
...//双向多对一关联ServiceProviderDomainMap @ManyToOne@JoinColumn(name ="SERVICE_PROVIDER_ID")私人ServiceProviderserviceProvider;
... //bi-directional many-to-one association to ServiceProviderDomainMap @ManyToOne @JoinColumn(name="SERVICE_PROVIDER_ID") private ServiceProvider serviceProvider;
...
}
我正在尝试删除提供行.但是我遇到了错误:
I am trying to delete provide row. But i am getting below error:
由以下原因引起:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败( fixoline
. service_center_details
,CONSTRAINT FK_qvahoxeovx9vmwl6mcu2c0lyw
外键( SERVICE_PROVIDER_ID
)参考 service_provider
( ID
))
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (fixoline
.service_center_details
, CONSTRAINT FK_qvahoxeovx9vmwl6mcu2c0lyw
FOREIGN KEY (SERVICE_PROVIDER_ID
) REFERENCES 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();
有人可以帮助解决它吗?
could someone pls help resolving it?
推荐答案
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
此异常表明您应该先删除与ServiceProviders关联的ServiceCenterDetails,然后再删除ServiceProviders.
this exception tells that you should delete your ServiceCenterDetails associated with ServiceProviders first and then delete the ServiceProviders.
这篇关于从onetomany中删除休眠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!