0

MongoDB を学習しようとしていますが、組み込みドメインの使用で問題が発生します。私のアプリには質問があり、0 から多くのオプションを含めることができます。

class Question {

    ObjectId id
    String text

    List<Option> optionList = []
    static embedded = ['optionList']
}

class Option {
    ObjectId id

    String text
    static belongsTo = [question: Question]
}

今、次のような 2 つのオプションを使用して質問を保存するように要求したい場合:

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

静的な hasMany で 1 対多の関係に変更すると、うまく機能します。

誰でも私を助けることができますか?

ありがとう

4

1 に答える 1

2

この行を置き換えます:

List<Option> optionList = []

List<Option> optionList =  new org.springframework.util.AutoPopulatingList<Option>(Option)
于 2012-08-06T19:51:56.067 に答える