2016-10-10 64 views
0

我目前使用的Grails 2.5.4,MongoDB插件(org.grails.plugins:mongodb:6.0.0.RC1),每當我嘗試更新任何域類的列表,它不起作用,例如:Grails的MongoDB列表不更新,我做錯了什麼?

Votation類:

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

這不是'option.voters.add(用戶)'使用GORM時,它的'option.addToVoters(用戶)'。 –

回答

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

+0

這也行不通,對不起 –

+0

我剛加了save()方法。如果GORM由於驗證錯誤而無法保存,則會引發ValidationException錯誤。 – elixir

+0

它不會拋出異常,並且.validate()返回true,這就是最令人費解的 –