繁体   English   中英

从onetomany删除Hibernate

[英]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:由造成无法删除或更新父行,外键约束失败( fixolineservice_center_details ,约束FK_qvahoxeovx9vmwl6mcu2c0lyw外键( SERVICE_PROVIDER_ID )参考service_providerID ))

以下是我的尝试方式

  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

有两个铃,

  1. 为什么你正在使用@OnDelete在使用你CascadeType.ALL@oneToMany 删除父级时, CascadeType.ALL将删除子实体。

  2. @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.

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