深度为 1 的关系实体也获取节点的关系

Relationship entities with depth 1 also fetching Node's relationships

我在我的项目中使用 neo4j-ogm 3.1.5。

在我的代码中,当我使用 depth = 1 获取任何关系实体时,它会获取 startNode 和 endNode,并且还会获取 startNode 和 endNode 的关系。基本上,它的深度参数作为 depth = depth + 1 工作,因为在获取关系实体时将相同的深度值传递给节点。

AFAIK 理解深度参数基本上像休眠的 LAZYEAGER 加载一样使用。 在 SchemaRelationshipLoadClauseBuilder class 中,它发生在方法

public String build(String variable, String label, int depth)

重现步骤

使用 findById 方法获取关系实体

当前实施

SchemaRelationshipLoadClauseBuilder中,方法如下:

public String build(String variable, String label, int depth)

问题是,这会导致我的项目出现问题,因为各个关系实体的 startNode 和 endNode 可以有超过 100 000 个同类关系,并且获取所有这些关系将占用内存机器。

谁能解释一下为什么会这样?

此行为的原因不是错误,而是 Cypher 查询的性质。 您不能单独加载关系。 必须有开始和结束节点才能形成正确的查询。

然后深度将应用于两个节点。 当然,这或多或少是一种定义,如果你已经从关系到节点中获取了一个 "hop" 但这肯定也会质疑 Neo4j-OGM 中的一般深度模型,因为突然间每个关系(不接触节点) 将算作一跳,击中该节点将是下一跳。