Hibernacja: sprawdź, które pola encji są zmodyfikowane
Co ja mam:
Mam encję Hibernate, która zawiera wiele pól nietrwałych, w tym kolekcje. Użytkownik może aktualizować każde pole osobno lub grupę pól jednocześnie.
Co za wyzwanie:
W programie obsługi powinienem sprawdzić, które pole jednostki zostało zmienione:
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?
}
Chcę to zrobić ze względów bezpieczeństwa i powiadamiania. Znaczy:
Nie wszyscy użytkownicy mogą modyfikować wszystkie polaPowinienem powiadomić określonych użytkowników w określony sposób o zmianie niektórych pól.Jaki problem:
Dostaję bardzo brzydki kod. Właściwie powtarzam wszystkie pola / kolekcje i dzwonięequals
metoda.
Pytanie:
Może być Hibernate zapewniać bardziej elegancki sposób sprawdzania, które pola zostały zmodyfikowane? W jaki sposób?
P.S.
@victorantunes zapewniają rozwiązanie, ale wydaje mi się to zbyt obszerne. Czy mogą być jakieś alternatywy?