嵌入式neo4j中的节点引用相等是否得到保证?

phi*_*686 2 neo4j node-neo4j

我使用嵌入式图形数据库作为Java应用程序的一部分.假设我执行某种类型的密码查询,并返回包含节点集合的ExecutionResult.

可以假设这些节点形成连接图.

这些节点中的每一个都有一些关系,我可以使用node.getRelationships(Direction.OUTGOING)来访问这些关系.我的问题是,如果其中一个关系的目标已经出现在执行结果中(即关系是查询模板的一部分),它是否保证Relationship.getEndPoint == Node X.

我想我真正要问的是,当Neo4j中的事务返回一个节点时,它只返回一个对象,并且不同的查询将继续返回对该一个对象的引用,或者它是否继续生成碰巧的新对象请参考相同的数据点?由于Node没有覆盖equalsTo方法,我一直在假设前者,但我希望有人可以告诉我.

Mic*_*ger 5

节点不是引用等号.您将只获取在不同操作中即时创建的NodeProxy对象.

但是equals()-method实现了id-equality,所以你应该使用它.

n1.equals(n2)
Run Code Online (Sandbox Code Playgroud)

或者如果你保持节点id使用

n1.getId() == n2.getId()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢迈克尔.您可以考虑将equals的行为添加到API JavaDoc中. (3认同)