我正在尝试学习MongoDB,但在使用嵌入式域时遇到了麻烦。我的应用有一个问题,可以包含0多个选项:
class Question {
ObjectId id
String text
List<Option> optionList = []
static embedded = ['optionList']
}
class Option {
ObjectId id
String text
static belongsTo = [question: Question]
}
现在,当我想要提出一个保存问题的请求时,请选择以下两个选项:
void testSave() {
QuestionController questionController = new QuestionController()
questionController.request.parameters =
[
"text": "test question",
"optionList[0].text": "a",
"optionList[1].text": "b"
]
questionController.save()
}
这引发了一个例外:
Invalid property 'optionList[0]' of bean class [groovy.lojzatran.anketa.Question]: Index of out of bounds in property path 'optionList[0]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
org.springframework.beans.InvalidPropertyException: Invalid property 'optionList[0]' of bean class [groovy.lojzatran.anketa.Question]: Index of out of bounds in property path 'optionList[0]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
当我使用static hasMany将关系更改为一对多时,它运行良好。
任何人都可以帮助我?
由于
答案 0 :(得分:2)
替换此行:
List<Option> optionList = []
与
List<Option> optionList = new org.springframework.util.AutoPopulatingList<Option>(Option)