Morphia禁用@referenced实体的加载

时间:2017-04-25 07:10:14

标签: mongodb mongodb-query morphia

我有2个收藏。

@Entity
public class TypeA {
    //other fields
    @Reference
    List<TypeB> typeBList;
}

@Entity
public class TypeB{
  //Fields here.
}

保存操作后,示例TypeA文档如下:

{
    "_id" : ObjectId("58fda48c60b200ee765367b1"),
    "typeBList" : [ 
        {
            "$ref" : "TypeB",
            "$id" : ObjectId("58fda48c60b200ee765367ac")
        }, 
        {
            "$ref" : "TypeB",
            "$id" : ObjectId("58fda48c60b200ee765367af")
        }
    ]
}

当我查询TypeA时,morphia急切地加载了我不想要的所有TypeB entites。

我尝试使用@Reference(lazy = true)。但没有帮助。

那么有没有办法可以使用morphia编写查询,我只能在typeBList中获取所有$ id?

1 个答案:

答案 0 :(得分:0)

列出ob obId而不是@Reference,并在需要时手动获取这些条目。

Lazy只会按需加载引用的实体,但由于您尝试访问该列表中的某些内容,它们将被加载。

个人意见:@Reference在你开始时看起来很棒,但它的使用很快就会引发问题。不要构建包含大量引用的模式 - MongoDB不是关系数据库。