ImpermanentGraphDatabase和SpringCypherRestGraphDatabase之间的@Query结果类型不同?

时间:2015-04-22 15:30:49

标签: neo4j spring-data-neo4j

我在存储库接口方法上使用@Query注释来检索路径中包含的节点列表。

如果我从ImpermanentGraphDatabase切换到SpringCypherRestGraphDatabase,我在解析结果时遇到错误,因为查询返回的类型非常不同:

上下文

  • 使用SDN 3.3.0.RELEASE和Neo4j 2.1.7
  • 代码用于Junit测试
  • 我的图表是这样的:(t:Type1)-[:HAS_KEY]->(:Key)-[:NEXT]->(:Key)-[:NEXT]->(:Key)-[:NEXT]-> ....等等(是的,它听起来像一个LinkedList ^^)
  • 查询是"我想要与我的类型相关联的所有密钥"所以我使用了路径查询:

    MATCH (key:Key)<-[:HAS_KEY]-(:Type1 {typeId :{0}}), p=(key)-[:NEXT*]->(:Key) RETURN nodes(p) ORDER BY length(p) desc LIMIT 1

使用ImpermanentGraphDatabase:

  • 我的查询返回Iterable<Iterable<Object>>,我必须转换&#34;对象&#34;使用Neo4jOperations.convert(...)方法在我的NodeEntity内部,因为这些对象的类型为NodeProxy

使用SpringCypherRestGraphDatabase:

  • 我的查询返回Iterable<Iterable<Map<String, String>>>,地图包含节点的属性名称作为键,相应的值作为地图条目值。

为什么会出现这样的实施差异?不管数据库服务的实现如何,我们都不应该期望相同的行为吗?

谢谢。

P.S。:顺便说一句,我尝试使用TraversalDescription实现相同的目标:它可以工作,并且相同的TraversalDescription可用于两个数据库实现

0 个答案:

没有答案