Встроенные документы 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, 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 автоматически. Также было добавлено поле version, но оно также имеет значение null, но, что интересно, поле _id не создано (даже если Я определил id в классе Info).

Во втором сценарии я пробую следующее:

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 являются ноль? Это предназначено для работы таким образом, или это ошибка?

Спасибо,


person Yassine Elouri    schedule 02.12.2011    source источник
comment
Можете ли вы опубликовать ссылку на ветку вопросов, размещенную на форуме Grails? Ваш вопрос когда-нибудь решился?   -  person Nathan Reese    schedule 28.12.2012
comment
Я думал о том же самом! Вы получили ответ?   -  person genuinefafa    schedule 23.06.2014


Ответы (1)


это, вероятно, связано с тем, как среда Grails выполняет преобразование (модуль GORM). Вы можете получить более быстрые/лучшие ответы на форуме Grails. В основном кажется, что часть автоматического поведения (заполнение дат и идентификатора объекта) выполняется только для корневого объекта, а не для подобъектов. Вы также можете заказать альтернативный ORM на основе morphia: http://www.grails.org/plugin/mongodb-morphia

person ajg    schedule 03.12.2011
comment
Я видел ORM, основанный на морфии, но я бы предпочел тот, который спонсируется Springsource. Я сделаю сообщение на форуме Grails, спасибо за указание на это. - person Yassine Elouri; 04.12.2011