Hibernate: проверить, какие поля сущности изменены
Что у меня есть:
У меня есть сущность Hibernate, которая содержит много нетранзитных полей, включая коллекции. Пользователь может обновить каждое поле отдельно или несколько групп полей одновременно.
Что за проблема:
В обработчике я должен проверить, какие поля сущности были изменены:
public void handle(Entity newVersion) {
Session session = sessionFactory.openSession();
Entity oldVersion = (Entity) session.get(Entity.class, entity.getId());
List changedFields = compareChanges(oldVersion, newVersion); //HOW TO CHECK WHICH FIELDS ARE CHANGED?
}
Я хочу сделать это по соображениям безопасности и уведомлений. Означает:
Не все пользователи могут изменять все поляЯ должен уведомить определенных пользователей определенными способами об изменении некоторых полей.Какая проблема:
Я получаю очень уродливый код. На самом деле я перебираю все поля / коллекции и вызываюequals
метод.
Вопрос:
Может быть, Hibernate предоставит более элегантный способ проверить, какие поля были изменены? Как?
Постскриптум
@victorantunes предоставляет решение, но оно кажется мне слишком полным. Может быть какие-нибудь альтернативы?