grails审计日志插件onSave in UserRole

grails审计日志插件onSave in UserRole,grails,grails-domain-class,audit-logging,Grails,Grails Domain Class,Audit Logging,审计日志如何在域类(如springSecurity的userRole)中工作 class SecUserSecRole implements Serializable { static auditable = true User user Role role ... def onSave = { map -> println "onSave userRole detected" } } 无论如何,谢

审计日志如何在域类(如springSecurity的userRole)中工作

class SecUserSecRole implements Serializable {
      static auditable = true

      User user
      Role role

      ...

      def onSave = { map ->
      println "onSave userRole detected"
      }
}

无论如何,谢谢。

我不完全理解为什么这不起作用,但原因似乎是auditPlugin在类的id为复合id时无法获取持久属性。因此,它假定没有任何更改,并且不会调用onSave

生成的
SecUserSecRole
类引入了一个基于
'role',user'
的ID复合键,auditPlugin正在尝试从hibernate
PostInsertEvent
中查找持久属性名。目前尚不清楚原因,但当域使用复合密钥时,属性将为空

作为一种解决方法,请尝试将域映射更改为

static mapping = {
   //id composite: ['role', 'user']
   role unique: 'user'
   version false
}
注意:这不是一个解决方案,可能会对springSecurity插件产生其他副作用。


更新:我担心删除复合密钥可能会影响springSecurity的多对多关系,但根据Burt的说法,删除复合密钥并创建它是安全的,就像我在这里提到的那样

在userRole域中未检测到onSave,您可以在其中解决问题?我在域类中输入手动审核日志