我在存储库接口方法上使用@Query注释来检索路径中包含的节点列表。
如果我从ImpermanentGraphDatabase切换到SpringCypherRestGraphDatabase,我在解析结果时遇到错误,因为查询返回的类型非常不同:
上下文:
(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可用于两个数据库实现