gpt4 book ai didi

grails - 在 afterInsert 事件中保存时对象不持久

转载 作者:行者123 更新时间:2023-12-04 23:23:39 25 4
gpt4 key购买 nike

我有一个这样的域类:

 class Domain {
String a
int b
String c
...


def afterInsert(){
def anotherDomain = new AnotherDomain()
anotherDomain.x=1
anotherDomain.y=2

if(anotherDomain.save()){
println("OK")
}else{
println("ERROR")
}

}
}

它打印“OK”,我什至可以打印 anotherDomain 对象,一切似乎都正常,没有错误,什么都没有,但是 anotherDomain 对象没有保留在数据库中

最佳答案

除非您尝试保存 withNewSession,否则您无法将域持久化到数据库中。 .

def beforeInsert(){
def anotherDomain = new AnotherDomain()
anotherDomain.x=1
anotherDomain.y=2

AnotherDomain.withNewSession{
if(anotherDomain.save()){
println("OK")
}else{
println("ERROR")
}
}
}
}

当域对象为 flushed 时,将触发所有事件到数据库。现有 session 用于刷新。不能使用同一个 session 来处理 save()在另一个域上。必须使用新 session 来处理 AnotherDomain 的持久性.

更新
使用 beforeInsert事件比 afterInsert 更有意义.如 xy依赖于 Domain 的任何持久值属性它们可以很好地从休眠缓存中获取,而不是去数据库。

关于grails - 在 afterInsert 事件中保存时对象不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17460173/

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