У меня есть класс Client. Я хочу иметь возможность проверять изменения свойств этого класса (не весь класс - просто его свойства).Аудит Изменение свойств - Spring MVC + JPA
public class Client {
private Long id;
private String firstName;
private String lastName;
private String email;
private String mobileNumber;
private Branch companyBranch;
На самом деле это очень легко проверить всю сущность с помощью @Audited аннотации.
Но я хочу проверить эти изменения, используя мою структуру классов.
вот мой желаемый класс результата:
public class Action {
private String fieldName;
private String oldValue;
private String newValue;
private String action;
private Long modifiedBy;
private Date changeDate;
private Long clientID;
результат должен выглядеть следующим образом:
FIELDNAME + "был изменен с" + OldValue + "к" + новое_значению + "для" ClientId + "by" modifiedBy;
- mobileNumber был изменен с 555 на 999 для Bill Gates by George.
Причина, по которой я делаю это, заключается в том, что мне нужно сохранить эти изменения в БД под таблицей действий - потому что я буду проверять свойства из разных объектов, и я хочу сохранить их вместе, а затем получить возможность получить когда мне нужно.
Как это сделать?
Благодаря
JPA не предоставляет способ проведения аудита изменений определенных свойств. Если вы используете Hibernate в качестве поставщика JPA, вы можете написать свой собственный [Interceptor] (https://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Interceptor.html), реализовать 'onFlushDirty ', проверьте поля, чтобы найти, какие из них были изменены, и затем создайте журнал аудита. – manish
Можете ли вы привести пример использования перехватчика? Я использую Hibernate в качестве провайдера JPA. – Irakli
См. [Официальная документация] (http://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#events). – manish