2013-07-29 3 views
0

У меня есть объект java, который необходимо обновить. Я использовал метод SaveOrUpdate для этого. Это прекрасно работает для обновления детей, но есть проблема с моим требованием.Удаление и обновление Hibernate

потому что мне нужно удалить ребенка из базы данных, если один из них удален.

, пожалуйста, у кого-нибудь есть идея реализовать это?

Ex: -

проект имеет один ко многим отношений с людьми.

проект имеет atribute как,

class Project { 
    long id; 
    Set<People> people; 
    ...... 
} 

public void updateProject(Project project) { 

    try { 
     getCurrentSession().saveOrUpdate(project); 
    } catch (Exception ex) { 
     logger.error(ex); 
    } 

объект проекта содержит люди набор, но удалены некоторые люди Идентификаторы от этого.

мне нужно обновить проект с удалением нежелательных людей Идентификаторы

Спасибо

ответ

1

Я предполагаю, что вы включили каскадирование на вашей организации проекта, так я думаю, что вам нужно добавить атрибут orphanRemoval к ​​соотношению. Пример для Вашего случая будет:

@OneToMany(cascade={CascadeType.ALL}, orphanRemoval=true) 
+0

Благодарим Вас за anwser. У меня есть небольшой вопрос. если, когда Im собирается обновить ребенка, кто-то может добавить нового ребенка с назначением проекту. в таком случае, если мы будем использовать это, что будет? удаленные вновь добавленные тоже? –

+0

Я не совсем уверен, что полностью понимаю ваш вопрос, но , пока вы добавляете новых детей в набор в наборе людей, и вы делаете saveOrUpdate проекта, все должно быть хорошо. Новый ребенок будет сохранен из-за каскадирования – steelshark

0

Код ссылки: Настройка каскада с «все-удалить-сирота» для удаления данных сирота ...

<hibernate-mapping> 
     <class name="User" table="UTABLE" > 
      <id name="UID" column="UID"/> 
      <property name="Name" column="F_Name"/> 
      <set name="phones" table="PHONE_NUMBERS" cascade="all-delete-orphan" lazy="true"> 
      <key column="UID"/> 
      <one-to-many class="PhoneNumber" /> 
     </set> 
     </class> 
    </hibernate-mapping> 
Смежные вопросы