2015-11-02 69 views
6

使用session.load()查詢深度2時出現超時。我正在使用Neo4j OGM 1.1.3(試圖從Spring Data Neo4j 3.4遷移) 。試圖加載節點對象在Neo4j中加載對象OGM 1.1.3 ogm深度爲2很慢

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; 
} 

連接到我的節點類別是非常流行的(20,000節點具有相同的類別)和當我使用運行session.load(Node.class, 1L, 2)請求超時。它是否試圖查詢類別的所有關係(即使我的Java模型類別忽略了這種關係)?

什麼,我希望它加載很簡單:

|My Node 
| |category 
| |child node 
| | | category 
| | | child node 

這是不是一個非常沉重的請求,應該不會超時(除非它加載不需要的關係

有沒有辦法告訴一個只負載某些關係深?

例如,我想加載一個樹的10個級別,但我的樹上的其他信息(如類別,角色這不是真正的樹節點,但只是代表更多的信息)我會只想要t加載他們沒有他們的關係。所以我想加載所有的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,新版本不會加載這些不需要的節點,從而導致巨大的性能提升。