2015-12-09 8 views
0

Я нашел некоторую информацию о слушателях NHb онлайн, таких как эта документация: http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/event/package-summary.html, но этого недостаточно, чтобы понять, как они работают. Это вопросы, касающиеся, скажем, PostUpdateEventListener. Мне не удалось найти ответы на следующие вопросы:Вопросы о слушателях NHibernate

1) Разве это не работает, когда мы вызываем Session.Save(entity) без каких-либо изменений для объекта, я имею в виду, когда в базе данных нет сценария обновления SQL? Если это так, есть ли какое-либо событие/прослушиватель Nhb для отслеживания фактического обновления базы данных, с заявлением UPDATE, работающим только на db? Наша организация настроена с DynamicUpdate(), если это имеет значение.

2) Что делать, если у нас есть отдельный вложенный объект, такой как [Имя] (не компонент, хранящийся в отдельной таблице) или список объектов, к которым относится наш прослушиваемый объект, такой как [Лицо]. Теперь мы обновляем имя пользователя, не внося никаких изменений в свойства объекта [Person]. Будет ли вызываться PostUpdateEventListener для [Person], если мы запустим Session.Save(person), или он запускается только один раз для [Name]?

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

+0

http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener http://nhibernate.info/doc/howto/various/changing-values-in-nhibernate-events.html –

ответ

0

я понял, что на практике, и только ради потомства вот ответы:

1) PostUpdateEventListener не реально работать, пока не фактические изменения не будут внесены в базу данных, даже если вы запустите Flush в явном виде

2) PostUpdateEventListener работает только для [Name], в случае, если это объект. Если [Name] является компонентом, PostUpdateEventListener работает for @event.Entity is [Person].

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