我目前正在使用Grails 2.5.4,使用MongoDB插件(org.grails.plugins:mongodb:6.0.0.RC1),每当我尝试更新任何域类的List时,它都没有工作,例如:
投票类:
class Votation {
String question
int minVotes
List <VoteOption> options
User owner
Chat chat
static belongsTo = [chat: Chat]
static embedded = ['options']
static constraints = {
owner nullable: false
chat nullable: false
//question nullable: false
}
VoteOption类:
class VoteOption {
String option
String url
List <User> voters
static belongsTo = [chat: Chat]
}
当我尝试更新列表时:
//some more code...
Votation votation = Votation.findById(votationId as Long)
VoteOption option = votation.options.find { it.option == votationOption }
User user = User.findOrCreateNew(params.user)
if (option.voters) {
option.voters.add(user) // THIS DOESN'T WORK!
}
else {
option.voters = [user] //This DOES work
}
这只是一个例子,我还有2个域名类也有列表,但他们也没有工作。 重新启动Grails并不能解决这个问题,这也发生在其他开发人员的计算机上,所以它不是我的环境。其他一切都得到了正确保存
答案 0 :(得分:0)
Try this
//some more code...
Votation votation = Votation.findById(votationId as Long)
VoteOption option = votation.options.find { it.option == votationOption }
User user = User.findOrCreateNew(params.user)
if (user) {
option.addToVoters(user) // <----
}
option.save(flush:true, failOnError:true)
参考:http://docs.grails.org/2.1.0/ref/Domain%20Classes/addTo.html