在Neo4j OGM 1.1.3中加载一个对象,深度为2,非常慢

Nay*_*ish 6 neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

我在使用时查询深度2时出现超时.我session.load()正在使用Neo4j OGM 1.1.3(尝试从Spring Data Neo4j 3.4迁移).尝试加载Node对象

class Node {
    Long id;
    String name;

    @Relationship(type="NodeToCategory")
    Category category;

    @Realtionship(type="NodeToChildNode")
    Node node
}

class Category {
    Long id;
    String name;
    String color;
    Date createdAt;
}
Run Code Online (Sandbox Code Playgroud)

连接到我的节点的类别非常受欢迎(20,000个节点具有相同的类别),当我使用运行时session.load(Node.class, 1L, 2),请求超时.它是否可以尝试查询该类别的所有关系(即使我的Java中的模型类别忽略了这种关系)?

我期望它加载的只是:

|My Node
|   |category
|   |child node
|   |   | category
|   |   | child node
Run Code Online (Sandbox Code Playgroud)

这不是一个非常繁重的请求,不应该超时(除非它加载不需要的关系.

有没有办法告诉只有负载某些关系深入?

例如,我想加载一个树的10个级别,但我的树上的其他信息(如类别,角色不是真正的树节点,但只是代表更多的信息)我只想加载它们没有他们的关系.所以我想加载所有Node对象,只在没有关系的情况下加载其他对象.

UPDATE

发现两个似乎解决这些问题的未解决问题:

https://github.com/neo4j/neo4j-ogm/issues/55

https://github.com/neo4j/neo4j-ogm/issues/70

小智 0

此问题已在 OGM 3.0 中通过基于架构的加载得到解决。

基于模式的加载意味着 OGM 现在会查看您的对象域模型,并且仅获取模型中真正存在的内容,而不是指定深度内的所有内容。

在您的情况下,由于Category不链接回Node,新版本不会加载这些许多不需要的节点,从而带来巨大的性能改进。