Grails MongoDB列表不更新,我做错了什么?

时间:2016-10-10 21:27:52

标签: mongodb grails gorm

我目前正在使用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并不能解决这个问题,这也发生在其他开发人员的计算机上,所以它不是我的环境。其他一切都得到了正确保存

1 个答案:

答案 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