![](/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.