GORM mongodb映射到现有的集合结构

时间:2011-10-25 14:14:18

标签: grails mongodb gorm

我是Grails& GORM的新手,所以这可能是一个很快的问题。我们目前正在考虑使用GORMs mongo支持,我有一些问题映射到现有的收集数据。我基本上想要映射到分层对象结构,其中我的对象“商家”引用另一个父商家。 BSON结构相当简单,即:

{
   name: "name",
   parent_id: ObjectId("[Object Id ref]")
}

在我的模型中,我试图按如下方式映射这种关系:

class Merchant {
    ObjectId id
    String name
    Merchant parent

    static belongsTo = [parent: Merchant]
    static mappedBy = [parent: "parentId"]

    static mapping = {
        collection  "merchants"
    }
    static constraints = {
    }
}

这导致以下BSON:

{
        "_id" : ObjectId("4ea6be91ce5f56cd49f43ab8"),
        "name" : "where will you g",
        "version" : NumberLong(1),
        "parent" : {
                "$ref" : "merchants",
                "$id" : ObjectId("4ea6be91ce5f56cd49f43ab8")
        }
}

这有两个问题,即: - 父商家字段的名称是“parent”而不是“parent_id”,这是必需的。 - 父字段的值具有除了$ ref:“商家”中的id之外的附加元信息。

无论如何,我可以保留现有的BSON结构并且仍然具有丰富的对象映射。

干杯,克里斯。

1 个答案:

答案 0 :(得分:0)

对于这两个问题,您需要一个额外的映射:

static mapping = {
    collection 'merchants'
    parent attr:'parent_id', reference:false
}

您还应该删除mappedBy块,因为只有当存在多个相同类型的字段时才需要它。

最后,请注意,引用:false是最新版本插件的默认设置(我认为是1.2+)。请注意,'attr'在其他GORM风格中被命名为'columnName'。