2011-12-02 92 views
3

我有這個簡單的模型:Grails Mongodb嵌入式文檔?錯誤?

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 
} 

寫這樣一來,答案嵌入問題(沒有ID維持答案)。我想維護ID,dateCreatedlastUpdated字段爲每答案。所以我嘗試以下方法:

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會和Grails不會自動維護lastUpdate。還加入版本場,但有一個價值爲好,但有趣的是沒有_id場創建(即使我在信息類中定義ID)。

在第二種情況下,我試試這個:

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,並版本?這是打算這樣工作,還是一個錯誤?

謝謝

+0

你能發佈一個鏈接到發佈在Grails論壇上的問題主題嗎?你的問題是否得到解決? –

+0

我想知道同樣的事情!你有答案嗎? – genuinefafa

回答

-1

這可能是由於Grails框架如何執行轉換(GORM的模塊)。 您可能從grails論壇獲得更快/更好的答案。 基本上看來,一些自動行爲(填寫日期和objectid)只對根對象完成,而不是子對象。 您還可以結算一個基於嗎啡的替代ORM: http://www.grails.org/plugin/mongodb-morphia

+0

我已經看到了基於morphia的ORM,但我寧願堅持Springsource贊助的ORM。我會在Grails論壇發帖,thankx指出。 –