2

您好,我对 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。

4

0 回答 0