2013-01-02 13 views
13

Mam dość skomplikowaną strukturę DB, którą próbuję kontrolować. Aktualnie mam Envers uruchomiony i kontroluje zmiany, które są wprowadzane do każdego obiektu. Działa to naprawdę dobrze!Hibernate Envers - Uzyskaj zmienione pola

Chcę teraz wyświetlić informacje dotyczące audytu w interfejsie użytkownika. Obiekty/tabele stają się dość skomplikowane, więc szukałem sposobu sprawdzenia, które zmienne zostały zmienione w audycie. Obecnie Envers przechowuje migawkę każdego obiektu opatrzonego identyfikatorem wersji. Mogę spojrzeć na wersję każdego obiektu, a następnie ręcznie zapytać, aby zobaczyć, co się zmieniło, ale zastanawiałem się, czy istnieje sposób, aby uzyskać Envers do przechowywania, które pola zostały zmienione. czy to możliwe? Znalazłem link this z 2011 roku i zaleca on ręczne sprawdzenie każdego pola obiektu. Moją obawą jest tutaj szybkość. Mam wiele powiązanych obiektów i mogę mieć tylko jedno zaktualizowane pole. Będę musiał wysłać zapytanie do wielu pól, aby znaleźć ten, który się zmienił.

Czy można zapisać zmienione pola?

Dzięki

EDIT

powinienem powiedzieć, że używam tabeli REVCHANGES więc mogę zobaczyć, co się zmieniło w tym co wersjami ale znowu jest to tylko na poziomie jednostka nie szczeblu terenowym

+1

+1 za to - Jesteśmy obecnie przy użyciu starego onPostUpdate słuchacza zrobić diff i nagrywanie diff w tabeli, gdy aktualizacje są wykonane. Idealnie kwerendy Envers powiedzieliby nam: 1. Co się zmieniło i dla dodatkowego kredytu: 2. Co to zmieniło zi do – ndtreviv

Odpowiedz

9

W nowszych wersjach Envers można śledzić, które właściwości zostały zmienione przy każdej wersji przy użyciu flagi boolowskiej. Zobacz:

http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-tracking-properties-changes

+4

Problem w tym, że o ile mogę powiedzieć, nie ma sposobu, aby programowo sprawdzić te informacje. Możesz go używać tylko w kwerendzie kontroli. Pomaga to ograniczyć wprowadzane przez ciebie poprawki, ale w ogóle nie jest pomocna w wyświetlaniu dziennika zdarzeń. Jeśli dobrze rozumiem oryginalny plakat, i dla własnego problemu, potrzebuję sposobu na dostęp do tych flag PO załadowaniu wersji, dzięki czemu mogę spokojnie pokazać użytkownikowi, co się zmieniło. W przeciwnym razie dziennik jest bezużyteczny, ponieważ trzeba długo czekać, aby dowiedzieć się, co się zmieniło. – user3402489

Powiązane problemy