Grails 3/GORM - 记录更改时的日志条目
Grails 3/GORM - Log entry upon record change
我有以下用户 class:
class User implements Serializable {
private static final long serialVersionUID = 1
transient springSecurityService
String username
String password
String email
String firstName
String middleName
String lastName
...
}
我想在名字、中间名或姓氏更改时创建一个新的域对象 UserNameChange:
class UserNameChange {
User user
String firstName
String middleName
String lastName
}
我知道我可以在事务服务中做到这一点,但如果我能在用户中完成同样的事情就更好了 class。我怎样才能原子地做到这一点?例如,"beforeUpdate" 是否总是以事务方式完成?
默认情况下,域 class' 方法不是事务性的。所以你必须使用 withTransaction()
:
class User {
def beforeUpdate() {
if( ![ 'firstName', 'middleName', 'lastName' ].any{ isDirty it } ) return
User.withTransaction{
new UserNameChange( ... ).save()
}
}
}
您可能还想看看 audit plugin
我有以下用户 class:
class User implements Serializable {
private static final long serialVersionUID = 1
transient springSecurityService
String username
String password
String email
String firstName
String middleName
String lastName
...
}
我想在名字、中间名或姓氏更改时创建一个新的域对象 UserNameChange:
class UserNameChange {
User user
String firstName
String middleName
String lastName
}
我知道我可以在事务服务中做到这一点,但如果我能在用户中完成同样的事情就更好了 class。我怎样才能原子地做到这一点?例如,"beforeUpdate" 是否总是以事务方式完成?
默认情况下,域 class' 方法不是事务性的。所以你必须使用 withTransaction()
:
class User {
def beforeUpdate() {
if( ![ 'firstName', 'middleName', 'lastName' ].any{ isDirty it } ) return
User.withTransaction{
new UserNameChange( ... ).save()
}
}
}
您可能还想看看 audit plugin