java - MongoRepository 防止递归 dbref
问题描述
我有一个看起来像这样的 mongo 集合:
{
"_id" : "brand1ID",
"brand" : "brand1"
"competitors" : [
{
"$ref" : "brands",
"$id" : "brand2ID",
"$db" : "my-db"
}
]
}
{
"_id" : "brand2ID",
"brand" : "brand2"
"competitors" : [
{
"$ref" : "brands",
"$id" : "brand1ID",
"$db" : "my-db"
}
]
}
和一个像这样的Java类:
public class Brand {
@Id
private String id;
private String brand;
@DBRef(lazy = true)
private List<Brand> competitors;
}
我想如果我@DBRef(lazy = true)
在 Java 类中添加竞争者属性,它不会在子类中加载竞争者,但情况似乎并非如此。如果我不放它,它只会以错误作为响应而中断,如果我放它,它会以大约 150 次迭代返回,然后出现有关堆栈溢出的错误。无论如何有可能实现这种行为?如果没有,还有什么替代方案?我不能将它们嵌入,因为所有条目都是某种品牌,而且它们都会有其他品牌的竞争对手。查找“brand1”时所需的结果如下所示:
{
"_id" : "brand1ID",
"brand" : "brand1"
"competitors" : [
{
"_id" : "brand2ID",
"brand" : "brand2"
"competitors" : null
}
]
}
这可能更像是一项 SQL 工作,但我坚持使用 Mongo。一个想法可能是将 ID 保存到列表中,然后单独查询它们,但我试图在单个查询中执行此操作。
解决方案
推荐阅读
- elixir - POST 后使用 plug_cowboy (2.0) 重定向
- odoo-11 - 将过滤器应用于 t-foreach
- c# - 预先已经在场景中的物体的物体池
- php - 在PHP中查找由破折号分隔的两个最长的字符串
- jpeg - 使用 FileChannel 和 ByteBuffer 读取 JPEG 幻数
- python - 我创建了一个语音助手,但我想将此助手语言转换为印地语,请帮助我
- xpath - 异常:远程主机强制关闭现有连接
- python - 打印包含字符的字符串输入
- php - 动态属性调用给出错误(Eloquent 构建器实例上不存在属性 [游戏]。)
- python - 如何检索数据库中类型错误的数据字段?