无法使用hibernate从表中删除数据

时间:2012-05-28 08:31:00

标签: hibernate

我在网上尝试了很多方法,但它不起作用。 我想使用hibernate从数据库中删除数据,但是我得到了这个错误 严重:无法删除或更新父行:外键约束失败(sakilacomanda,CONSTRAINT comanda_ibfk_1 FOREIGN KEY(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());
    }
}

1 个答案:

答案 0 :(得分:2)

这只是意味着删除产品是不可能的,因为它会破坏数据库中的外键约束。您有产品订单,但您正在尝试删除该产品。您将如何兑现订单?你必须决定:

  • 要么在删除产品之前删除引用产品的订单
  • 或者您将订单保留在数据库中,但这些订单不得再引用该产品。

不执行上述任何操作会使数据库处于不一致状态:不存在的产品订单。数据库中的外键约束确保了这种不一致的状态是不可能的。