0

我正在尝试存储可审计的每个域的实例或至少 id。例如,有一个域“学生”并且是可审计的。因此,每当创建或编辑域实例时,都会在审计日志中存储一条新记录。我想要的是存储保存或更新的每个域的 id。怎么做到呢 ?提前致谢

4

4 回答 4

1

您可以更好地参考网址: http: //grails.org/plugin/audit-logging

上述插件适用于没有集合的域类,如果您在域类中使用集合,请参阅此 stackoverflow 链接:如何确定 Hibernate PostUpdateEventListener 中的集合更改?

希望对您有很大帮助

于 2013-10-28T04:07:23.290 回答
1

您可以使用 Grails Envers 插件,该插件在下面使用 Hibernate Envers。插件信息可以在这里的插件站点上找到。

于 2012-10-11T10:21:43.957 回答
0

您可以使用下面的 AuditLog 插件事件,然后添加您想要的任何内容。希望这是有道理的

def onChange = { oldMap,newMap ->
        println "Person was changed ..."
        oldMap.each({ key, oldVal ->
            if(oldVal != newMap[key]) {
                println " * $key changed from $oldVal to " + newMap[key]
            }
        })
    }


def onSave = {
        println "new datainserted"
        // may optionally refer to newState map
    }

在任何这些方法中,我们都可以使用

 def event = new AuditLogEvent(
                    actor: actor,
                    className: className,
                    eventName: eventName,
                    persistedObjectId: objectId,
                    propertyName: propertyName,
                    newValue: newValue
            )
            if (event.validate()) {
                auditLogListener.saveAuditLog(event)
                log.info "Logged audit event [$event]"
            }
于 2012-10-12T16:24:25.087 回答
0

我不会使用审计插件,它在运行测试时会出现一些问题。这个插件是在 GORM 不支持事件时创建的。可以拦截以下事件

beforeInsert - Executed before an object is initially persisted to the database
beforeUpdate - Executed before an object is updated
beforeDelete - Executed before an object is deleted
beforeValidate - Executed before an object is validated
afterInsert - Executed after an object is persisted to the database
afterUpdate - Executed after an object has been updated
afterDelete - Executed after an object has been deleted
onLoad - Executed when an object is loaded from the database

希望这可以帮助

于 2012-10-11T21:23:47.030 回答