我如何从(spring-data-)neo4j数据库中检索所有关系?

时间:2011-12-02 09:10:17

标签: java neo4j spring-data-graph

有没有办法简单地从spring-data-neo4j [SDN]数据库中检索某种类型的所有关系 - 其中type是@RelationshipEntity注释类? (使用2.0.0.RC1和嵌入式数据库)

当我尝试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(虽然正在寻找

解决方案是使用低级别(neo4j)API(即GraphDatabaseService)来检索所有节点,然后为每个节点检索所有关系并验证其__type__字段是否与我感兴趣的关系类型。但是为什么要为关系提供findAll方法呢?

简单的解释是建议的接口对于节点和关系是相同的 - 但是有没有文档说我们不允许使用findAll来建立关系?

或者:检查数据库中的关系实体,它与异常相矛盾,因为类型按预期正确定义,并且一旦检索到,就可以通过高级(SDN)API检索关系节点,您调用getRelationship*(..)

另一方面说明:有人知道{2}服务是否会包含在{2}中吗?

1 个答案:

答案 0 :(得分:2)

您是否正在寻找在SDN或所有关系中创建为关系实体的关系?

你的用例是什么?

Relationship-Entites也会添加到索引中。 关系9672是关系实体吗?

对于Relationship-Repository - 依赖于TypeRepresentationStrategy,如果使用“indexed-strategy”,Relationship-Enties也可以在各自的存储库中使用(但不是全局)。

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

ImpermanentGraphDatabase超出了Neo4j测试工具链。它将在v2 +中保留(并提高性能)。