2011-12-02 93 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