您好,我对 Grails 中的 beforeInsert/beforeUpdate 有疑问。我无法让一个简单的父/子用例工作。孩子更新父孙计数器。请参阅下面的模型:
class Parent{
int grandchildren
def beforeUpdate(){
}
}
class Child{
Parent parent
int childCount
def beforeInsert(){
// 1: Works, beforeUpdate is called in Parent
parent.grandchildren+=childCount
parent.save()
}
def beforeUpdate(){
// 2: Does not work, grandchildren not updated and beforeUpdate not called in Parent
parent.grandchildren+=childCount
parent.save()
}
}
2) 这由 grails 文档记录。在会话刷新时调用 BeforeUpdate,因此在处理更新时添加更新会导致意外行为。文档说要使用 withNewSession 来解决这个问题,但是如果没有在两个不同的会话中注册父实例,我无法弄清楚如何做到这一点。
我的问题是如何实现这一点。我不想使用 HQL 来更新父实体,因为我需要调用 beforeUpdate。