我有两个Domain类

class Reputation {
    int value
    static hasMany = [events: Event]
    static mapping = {
         value defaultValue: 0
  }
}


class Event {
    int     point
    static belongsTo = [reputation: reputation]
}

在信誉服务中,我这样做
reputation.addToEvents(new Event())
reputation.save() //which gonna make event and reputation save at once

但我希望将信誉中的值更新为:值是所有事件点的总和。所以我补充说:
Class Event {
    //....
    def afterInsert() {
    reputation.value += point
    reputation.save()
    }
}

但这是行不通的:我一直都有一个声望.value = 0。

怎么了 ?而我该如何正确执行呢?

最佳答案

如果仔细查看有关事件和GORM的Grails documentation,您会注意到它说:



因此,在您的情况下,可能是这样的:

Class Event {
    //....
    def afterInsert() {
      Event.withNewSession {
        reputation.value += point
        reputation.save()
      }
    }
}

07-24 13:13