2013-06-05 3 views
1

Есть два субъекта отношений с родителями/детьми. И только конфигурация отображения в файле hbm.xml ребенка. Как это:Hibernate: Как я могу узнать, что дети грязные или нет?

<many-to-one 
    name="child" 
    class="com.Child" 
    update="true" 
    insert="true" 
    cascade="save-update"> 
     <column not-null="false" name="PARENT_ID"></column> 
    </many-to-one> 

Нет <one-to-many> конфигурации в hbm.xml родителя.

Теперь я хочу использовать ClassMetaData, чтобы получить все свойства от объекта, чтобы убедиться, что он грязный или нет. Но я не могу получить свойства child из ClassMetaData, потому что он не настроен.

Но когда я использую session.saveAndUpdate (parentEntity), Hibernate знает, что ребенок грязный и может обновлять грязный дочерний объект. Как Hibernate это делает? В любом случае, я могу получить грязное состояние дочернего объекта?

+0

Вы имеете в виду следующее: http://stackoverflow.com/questions/5268466/how-does-hibernate-detect-dirty-state-of-an-entity-object? –

ответ

0

см ссылку ниже:

How does Hibernate detect dirty state of an entity object?

Он основан на сравнении снимков данных в БД с данными, посланных к нему из приложения.

+0

объясняет, почему спящий режим будет сохранять дочернюю сущность. Но я ищу, что есть способ узнать о грязном статусе дочернего субъекта. – lephix

1

Некоторые поисковые запросы показывают, что нет «простого» способа. Для этого вам нужно использовать hibernate interceptors. Ваш прецедент объясняется в this blog.

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