2011-12-02 92 views
0

有沒有辦法從spring-data-neo4j [SDN]數據庫中簡單檢索某種類型的所有關係 - 其中類型是@RelationshipEntity帶註釋的類 - ? (與2.0.0.RC1 &嵌入式DB工作)如何從(spring-data-)neo4j數據庫檢索所有關係?

當我試圖通過SDN提供的方法:

relationShipRepository.findAll() 

它給了我下面的錯誤:

org.neo4j.graphdb.NotFoundException: __type__ property not found for RelationshipImpl #9672 of type 7 between Node[4844] and Node[4875].

完整堆棧跟蹤: http://pastebin.com/j2gqcjxh(雖然看

解決方案將是使用l ow level(neo4j)API(即GraphDatabaseService)來檢索所有節點,然後爲每個節點檢索它們的所有關係,並驗證它們的__type__字段是否與我感興趣的關係類型匹配。但爲什麼要提供findAll關係方法?

簡單的解釋是建議的接口對於節點和關係是相同的 - 但是有沒有文檔說我們不允許使用findAll進行關係?

或者:檢查關係的實體在DB,它違背了異常,因爲正確定義爲預期的,這是可能的,一旦你檢索到的節點中檢索通過高水平(SDN)API的關係和你打電話getRelationship*(..)

在其他說明:有沒有人知道ImpermanentDataGraph服務將包含在V2 +?

回答

2

您是否正在尋找在SDN或所有關係中創建爲關係實體的關係?

你的用例是什麼?

關係 - 實體也被添加到索引。 關係9672是關係實體嗎?

對於Relationship-Repository(依賴於TypeRepresentationStrategy),如果使用「indexed-strategy」,則Relationship-Enties也可以在其各自的存儲庫(但不是全局的)中使用。

在Neo4j 1.6.M01中有一個新的[GlobalGraphOperations][1]類,也有getAllRelationships()

ImpermanentGraphDatabase不在Neo4j測試工具鏈中。它會在v2 +中呆在那裏(並提高性能)。

+0

是的,9672是由'relaTo'創建的'RelationshipEntity',用於'RelClass rel = nodeEntity.relateTo(otherNodeEntity,RelClass.class,\t RELATIONSHIP_NAME);'。 RelClass用'@ RelationshipEntity'註釋。在我使用'@ RelatedToVia'註解的字段中檢索應用程序的某些部分。不過,我無法使用相應的回購庫findAll方法來檢索它。 – Matyas

+0

如果問題仍然存在,您可以在http://spring.neo4j.org/issues提出問題(用一個測試案例顯示這個問題)嗎? –

+0

問題不再存在(1.6M02)。感謝您的幫助(並且很抱歉沒有回覆您)。如果我發現可疑行爲,並通過測試用例證明,我會將其發佈到那裏。目前我沒有遇到過這樣的問題。 – Matyas