2012-05-28 2 views
0

Я пробовал много методов в сети, но это не работает. Я хочу, чтобы удалить данные из базы данных, используя спящий режим, но я получаю эту ошибку СИЛЬНЫМ: Невозможно удалить или обновить родительскую строку:. Ограничение внешнего ключа не удается (sakilacomanda, скованность comanda_ibfk_1 FOREIGN KEY (IDPRODUS) Лит 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()); 
    } 
} 
+0

Вы дважды разместили картографию «комманды» и отсутствует отображение «produs». – Pino

+0

@Pino Я отредактировал его. Спасибо, что дали мне знать. – alin

ответ

2

Это просто означает, что удаление продукта невозможно, поскольку оно нарушит ограничение внешнего ключа в базе данных. У вас есть заказы на ваш продукт, но вы пытаетесь удалить продукт. Как вы будете выполнять поручения? Вы должны решить:

  • либо удалить заказы, ссылающиеся продукт перед удалением продукта
  • или сохранить заказы в базе данных, но эти приказы не должны ссылаться на продукте больше.

Не делая ничего из вышеперечисленного, вы оставите базу данных в несогласованном состоянии: заказы на продукты, которых не существует. Ограничение внешнего ключа в базе данных гарантирует, что такое несогласованное состояние невозможно.

+0

спасибо за ваш совет @JB Nizet. – alin

Смежные вопросы