簡體   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