gpt4 book ai didi

hibernate - 是否可以将域类配置为插入新记录而不是在保存时进行更新?

转载 作者:行者123 更新时间:2023-12-02 13:54:12 25 4
gpt4 key购买 nike

当我更改域对象而不是更新数据库记录时,我想将旧的记录记录存档并创建一个新的记录。我想强制GORM自动执行此操作。

例如,如果我有这个域类:

class User {
String username
String email
Boolean active
}

那我想
user.email = email
user.save()

将用户的 Activity 标志设置为false,并保留旧电子邮件的记录。将插入具有新电子邮件地址和active = true的新记录。

这是常见的模式吗?在域类中是否容易做到透明地进行?

最佳答案

您可以在用户域类中使用GORM事件beforeUpdate(请参阅文档herehere),以下内容应可以正常工作(未经测试):

def beforeUpdate() {
if (isDirty('email') { //enters only if email was changed. Works only with Grails 1.3.x
User.withNewSession {
//Create the new entry
new User(username:username, email:email).save()
//Update the old entry with the old email value
email = getPersistentValue('email')
}
}
}

关于hibernate - 是否可以将域类配置为插入新记录而不是在保存时进行更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com