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()
}
}
}