私はこの単純なモデルを持っています:
abstract class Info {
ObjectId id
Date dateCreated
Date lastUpdated
}
class Question extends Info {
String title
String content
List<Answer> answers = []
static embedded = ['answers']
}
class Answer {
String content
}
このように書くと、answerはquestionに埋め込まれます(そして、 answerのidは維持されません)。すべてのanswerのid、dateCreated、およびlastUpdatedフィールドを維持したいと考えています。だから私は次のことを試します:
class Answer extends Info {
String content
}
簡単なテスト ケースを実行すると (回答が 1 つの質問を保存する)、次の結果が得られます。
> db.question.find()
{ "_id" : ObjectId("4ed81d47e4b0777d795ce3c4"), "answers" : [ { "content" : "its very
cool", "dateCreated" : null, "lastUpdated" : null, "version" : null } ], "content" :
"whats up with mongodb?", "dateCreated" : ISODate("2011-12-02T00:35:19.303Z"),
"lastUpdated" : ISODate("2011-12-02T00:35:19.303Z"), "title" : "first question",
"version" : 0 }
ここで、dateCreated フィールドとlastUpdateフィールドが Grails によって自動管理されていないことに気付きました。また、バージョンフィールドが追加されましたが、null値もありますが、興味深いことに、_idフィールドは作成されませんでした ( Infoクラスでidを定義したとしても)。
2 番目のシナリオでは、これを試します。
class Answer {
ObjectId id
String content
}
次の出力が得られます。
> db.question.find()
{ "_id" : ObjectId("4ed81c30e4b076cb80ec947d"), "answers" : [ { "content" : "its very
cool" } ], "content" : "whats up with mongodb?", "dateCreated" : ISODate("2011-12-
02T00:30:40.233Z"), "lastUpdated" : ISODate("2011-12-02T00:30:40.233Z"), "title" :
"first question", "version" : 0 }
今回は、埋め込みドキュメントのidも作成されません。このシナリオの説明はありますか? なぜidプロパティがなく、なぜdateCreated、lastUpdated、およびversionがnullなのですか? これはこのように動作することを意図したものですか、それともバグですか?
ありがとうございました、