Grails: регистрация изменений данных домена

Мне нужно регистрировать изменения данных из таблицы "documents" в другую таблицу "documents_log" с помощью Grails. Есть простой способ сделать это?

Я читал о ведении журнала аудита, но документация плохая, и он регистрируется в той же таблице, верно?

Какие-либо предложения?


person VMOrtega    schedule 12.03.2012    source источник
comment
Ведение журнала аудита не регистрируется в той же таблице. Он регистрируется в таблице audit_log   -  person Dónal    schedule 12.03.2012


Ответы (2)


Вы также можете использовать события GORM:

http://grails.org/doc/latest/guide/GORM.html#eventsAutoTimestamping

и реализовать именно то, что вам нужно.

person Tom Metz    schedule 12.03.2012
comment
разрешает ли это модификацию объектов внешнего домена? - person Marc; 13.03.2012

Плагин Audit Logging регистрирует все изменения в классах предметной области, подлежащих аудиту, в таблицу с именем AUDIT_LOG. Если ваш домен DOCUMENTS является единственным доменом, подлежащим аудиту, то только в нем будут записываться события, подлежащие аудиту.

После установки плагина (grails install-plugin audit-logging) вы можете сделать класс домена доступным для аудита, добавив этот параметр «аудируемый»:

class Documents {
    static auditable = true
    Long id
 ...

В соответствии с этим возможность изменить имя таблицы аудита с помощью конфигурации еще не реализована: http://jira.grails.org/browse/GPAUDITLOGGING-30

Если вы непреклонны в регистрации изменений в домене DOCUMENTS в таблице с именем DOCUMENTS_LOG, вы, вероятно, могли бы создать синоним в своей базе данных для достижения этой цели. Или, если вам просто нужно, чтобы DOCUMENTS_LOG был удобочитаемым, создайте представление DOCUMENTS_LOG для AUDIT_LOG.

Кроме того, я не уверен, что вы подразумеваете под «... он регистрируется в той же таблице».

person Marc    schedule 12.03.2012
comment
Кажется, он думает, что плагин Audit Logging сам поместит журналы в таблицу «Документы», но, как вы указали, это неверно. - person Dónal; 12.03.2012