我的grails域对象中有一个字段,希望成为其他表的派生字段。我的域如下所示

class VotingTally{

   int votesSource1
   int votesSource2
   int totalVotes

}

static mapping = {
    totalVotes formula: (votesSource1.numOfVotes+ votesSource2.numOfVotes)
}

我得到的错误是
No such property: votesSource1 for class: org.grails.datastore.mapping.config.groovy.MappingConfigurationBuilder

最佳答案

首先,formula应该是带有SQL表达式的字符串(您具有Groovy表达式)。喜欢:

static mapping = {
    totalVotes formula: 'numOfVotes1 + numOfVotes2'
}

但是在您的情况下,您想从联接表中计算值,而这是不可能的。您只是不能从此处添加JOIN

似乎只有一种方法-从代码中加载它:
static transients = ['totalVotes']

int getTotalVotes() {
    VotesSource.get(votesSource1).numOfVotes + VotesSource.get(votesSource2).numOfVotes
}

09-05 16:34