0

我在网上试过很多方法,但都不行。我想使用休眠从数据库中删除数据,但出现此错误严重:无法删除或更新父行:外键约束失败(sakila. comanda, CONSTRAINT comanda_ibfk_1FOREIGN KEY ( IDPRODUS) REFERENCES produs( IDPRODUS)) 严重:无法同步数据库状态与会话

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());
    }
}
4

1 回答 1

2

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

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

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

于 2012-05-28T08:48:53.037 回答