GORM:什么是引用:在Grails域类映射块中是真的吗?

时间:2015-05-12 08:16:16

标签: grails gorm grails-domain-class

public class Address {
    static mapWith = "mongo"

    Region region;
    Zone zone;

    static mapping = {
        id generator: 'identity'
        region reference:true
        zone reference:true
    }
}

我有兴趣知道reference:true做了什么。

根据我的经验,除非在实际的mongo文档中没有DBRef,否则将其关闭会产生完全相同的结果。

2 个答案:

答案 0 :(得分:2)

看起来reference可以控制文档的链接方式。

true时,相关文档由db-refs引用,如果false,则GORM在mongo中插入简单id,又名Manual references

答案 1 :(得分:1)

这意味着这些属性将通过引用存储在您的地址记录中。查询数据库时,区域的ID和区域的ID将存在于记录中,而不是存储整个对象的映射以及其映射可能包含的任何对象。返回Address对象看起来像这样:

{
  "id": "2413",
  "region": DBRef("region", "1234"),
  "zone": DBRef("zone", "4321")
}

对于非嵌入式关联,默认情况下,GORM for MongoDB将使用MongoDB数据库引用(也称为DBRefs)映射文档之间的链接。如果您不想使用DBRefs,那么您可以通过使用reference:false映射告诉GORM使用直接链接。

Gorm Mapping
Searchable Reference