0

ネットで色々な方法を試しましたがダメでした。Hibernate を使用してデータベースからデータを削除したいのですが、このエラーがsakila発生comandaしますセッションありcomanda_ibfk_1IDPRODUSprodusIDPRODUS

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 に答える