gpt4 book ai didi

Grails Mongodb 嵌入式文档?错误?

转载 作者:可可西里 更新时间:2023-11-01 09:56:17 25 4
gpt4 key购买 nike

我有这个简单的模型:

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)。我想为每个答案 维护iddateCreatedlastUpdated 字段。所以我尝试以下操作:

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 }

我在这里注意到 dateCreatedlastUpdate 字段不是由 Grails 自动维护的。还添加了 version 字段,但也有一个 null 值,但有趣的是没有创建 _id 字段(即使我在 Info 类中定义了 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 属性,为什么 dateCreatedlastUpdatedversion?这是打算以这种方式工作,还是一个错误?

谢谢,

最佳答案

这可能是由于 grails 框架如何进行转换(GORM 模块)。您可能会从 grails 论坛获得更快/更好的答案。基本上,某些自动行为(填写日期和 objectid)似乎只针对根对象而不是子对象。您还可以检查基于吗啡的替代 ORM: http://www.grails.org/plugin/mongodb-morphia

关于Grails Mongodb 嵌入式文档?错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com