2012-05-28 47 views
0

我在網上嘗試了很多方法,但它不起作用。 我想刪除使用Hibernate數據庫中的數據,但我得到這個錯誤 重度:不能刪除或更新父行:外鍵約束失敗(sakilacomanda,約束comanda_ibfk_1外鍵(IDPRODUS)參考文獻produsIDPRODUS) ) 重度:無法與會話同步數據庫狀態無法使用休眠功能從表中刪除數據

comanda意味着秩序和produs意味着產品

下面是代碼:

private void StergeButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    try{ 
     org.hibernate.Transaction tx = session.beginTransaction(); 

     int idprodus = ((Produs)IdProdusComboBox.getSelectedItem()).getIdprodus(); 
     Produs produs = (Produs) session.get(Produs.class, idprodus); 

     session.delete(produs); 

     tx.commit(); 
    }catch(Exception e){ 
     System.out.println(e.getMessage()); 
    } 
} 
+0

您已發佈兩次「comanda」的映射,並且缺少「produs」的映射。 – Pino

+0

@Pino我編輯它。謝謝你讓我知道。 – alin

回答

2

這只是意味着刪除產品是不可能的,因爲它會打破數據庫中的外鍵約束。您有產品訂單,但您試圖刪除該產品。你將如何履行命令?你必須決定:

  • 要麼你刪除產品
  • 前刪除訂單引用的產品或你保持訂單的數據庫,但這些訂單不能引用該產品了。

不執行上述任何操作會使數據庫處於不一致狀態:不存在的產品訂單。數據庫中的外鍵約束確保這種不一致的狀態是不可能的。

+0

謝謝你的建議@JB Nizet。 – alin