0

У меня есть следующая ситуация: В одной таблице клиентов может быть много проектов. отношение является двунаправленным.Удалить запись из родительского стола в отношениях один-ко-многим в спящем режиме

Я пытаюсь удалить клиента из списка клиентов и если клиенты уже назначены некоторые проекты, которые я получил исключение:

" that I cannot delete or update a parent row: a foreign key constraint fails"

означает, что я первый, чтобы удалить соответствующие проекты.

Однако мне нужно решение для этого случая, и я полагаю, что проблема связана с файлами сопоставления. Вот отображение файлов:

<hibernate-mapping> 
<class name="com.nisid.entities.Customers" table="customers"> 
<meta attribute="class-description"> This class contains the customer records. </meta> 
<id name="customerId" type="int" column="customerId"> 
    <generator class="native"/> 
</id> 
<many-to-one name="fkuser" class="com.nisid.entities.Worker" 
     fetch="select"> 
     <column name="fk_userID" not-null="true"/> 
</many-to-one> 
<set name="projects" lazy="false" inverse="true" fetch="select" cascade="all" > 
<key column="customerId" not-null="true"/> 
<one-to-many class="com.nisid.entities.Project"/> 
</set> 

<property name="customerName" column="customerName" type="string"/> 
<property name="customerSurname" column="customerSurname" type="string"/> 
<property name="adress" column="adress" type="string"/> 
<property name="email" column="email" type="string"/> 
<property name="phoneNumber" column="contactDetails" type="string"/> 

</class> 


</hibernate-mapping> 

И ребенок:

<hibernate-mapping> 
<class name="com.nisid.entities.Project" table="projects"> 
<meta attribute="class-description"> This class contains the project records. </meta> 
<id name="projectId" type="int" column="projectId"> 
    <generator class="native"> 

    </generator> 
</id> 

<many-to-one name="fkCustomer" class="com.nisid.entities.Customers" 
     fetch="select"> 
     <column name="customerId" not-null="true"/> 
</many-to-one> 


<set name="payments" lazy="true" fetch="select" inverse="true" > 
<key column="projectId" not-null="true"/> 
<one-to-many class="com.nisid.entities.Payment"/> 
</set> 


<property name="projectName" column="projectName" type="string" /> 
<property name="projectDescription" column="description" type="string"/> 


</class> 


</hibernate-mapping> 

ответ

0

Изменить каскад на ваших проектов установлен на «все-удалить-сироту» вместо «все»

+0

я есть thge то же ошибка снова ...: ПРЕДУПРЕЖДЕНИЕ: Ошибка SQL: 1451, SQLState: 23000 SEVERE: невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется ('customer'.'payments', CONSTRAINT' payments_ibfk_1' FOREIGN KEY ('projectId') ССЫЛКИ' проекты' ('projectId')) SEVERE: Не удалось синхронизировать состояние базы данных с сеансом –

+0

Я решил, что проект таблицы связан с другой таблицей, поэтому у меня возникла проблема;) –

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

  • Нет связанных вопросов^_^