我的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
}