【发布时间】:2019-01-23 19:39:16
【问题描述】:
我在我的项目中使用 neo4j-ogm 3.1.5。
在我的代码中,当我使用depth = 1 获取任何关系实体时,它正在获取startNode 和endNode,它还获取startNode 和endNode 的关系。基本上,深度参数作为depth = depth + 1 工作,因为在获取关系实体时将相同的深度值传递给节点。
AFAIK 理解深度参数的使用基本上类似于休眠的 LAZY 或 EAGER 加载。
在SchemaRelationshipLoadClauseBuilder 类中,它发生在方法中
public String build(String variable, String label, int depth)
复制步骤
使用findById方法获取关系实体
当前实施
在SchemaRelationshipLoadClauseBuilder,如下方法:
public String build(String variable, String label, int depth)
- 调用
expand(sb, "n", start, depth)而不是expand(sb, "n", start, depth-1),并且 - 调用
expand(sb, "m", end, depth)而不是expand(sb, "m", end, depth-1)。
问题是,这会导致我的项目出现问题,因为各个关系实体的 startNode 和 endNode 可以有超过 100 000 个相同类型的关系,并且获取所有这些关系会占用机器的内存.
谁能解释为什么会这样?
【问题讨论】:
标签: java neo4j spring-data-neo4j neo4j-ogm