Grails 3/GORM-记录更改时的日志条目

Grails 3/GORM-记录更改时的日志条目,grails,gorm,grails3,Grails,Gorm,Grails3,我有以下用户类: class User implements Serializable { private static final long serialVersionUID = 1 transient springSecurityService String username String password String email String firstName String middleName String la

我有以下用户类:

class User implements Serializable {

    private static final long serialVersionUID = 1

    transient springSecurityService

    String username
    String password
    String email

    String firstName
    String middleName
    String lastName

    ...

}
我想在第一个、中间个或姓氏更改时更改新的域对象用户名:

class UserNameChange {
    User user
    String firstName
    String middleName
    String lastName
}

我知道我可以在事务服务中做到这一点,但是如果我可以在用户类中完成同样的事情,那就更好了。我怎样才能做到原子化?例如,“beforeUpdate”是否始终是事务性的?

默认情况下,域类的方法不是事务性的。因此,您必须使用
with transaction()


您可能还想看看默认情况下域类的方法不是事务性的。因此,您必须使用
with transaction()


您可能还想看看

这是否只会将UserNameChange的保存放在事务中,而不会在保存用户时出错而回滚?不,不会。您可以在更新之前检查内部用户对象的有效性如果您需要正确的发送-使用您提到的服务这不只是将UserNameChange的保存放在事务中,而不会在保存用户时出错而回滚吗?不,不会。您可以在更新之前检查内部用户对象的有效性,如果您需要正确的发送-使用您提到的服务
class User {
  def beforeUpdate() {
    if( ![ 'firstName', 'middleName', 'lastName' ].any{ isDirty it } ) return 
    User.withTransaction{
      new UserNameChange( ... ).save()
    }
  }
}