Morphia 禁止加载@referenced 实体
Morphia disable loading of @referenced entities
我有 2 个collections。
@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 时,吗啡急切地加载所有我不想要的 TypeB 实体。
我尝试使用@Reference(lazy = true)。但是没有帮助。
那么有没有一种方法可以让我使用吗啡编写一个查询,其中我只获取 typeBList 中的所有 $id?
使用 ob ObjectIds 列表而不是 @Reference
并在需要时手动获取这些条目。
Lazy 只会按需加载引用的实体,但由于您试图访问该列表中的某些内容,它们将被加载。
个人意见:@Reference
开始时看起来不错,但使用起来很快就会出现问题。不要构建包含大量引用的模式 — MongoDB 不是关系数据库。
我有 2 个collections。
@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 时,吗啡急切地加载所有我不想要的 TypeB 实体。
我尝试使用@Reference(lazy = true)。但是没有帮助。
那么有没有一种方法可以让我使用吗啡编写一个查询,其中我只获取 typeBList 中的所有 $id?
使用 ob ObjectIds 列表而不是 @Reference
并在需要时手动获取这些条目。
Lazy 只会按需加载引用的实体,但由于您试图访问该列表中的某些内容,它们将被加载。
个人意见:@Reference
开始时看起来不错,但使用起来很快就会出现问题。不要构建包含大量引用的模式 — MongoDB 不是关系数据库。