1

是否有一种线程安全的方法来确保由框架图创建唯一的顶点?考虑以下:

Node n = framedGraph.addVertex(1, Node.class);
Node m = framedGraph.addVertex(1, Node.class);
System.out.println(n.equals(framedGraph.getVertex(1, Node.class)));
System.out.println(m.equals(framedGraph.getVertex(1, Node.class)));

打印true, false

我正在寻找类似于 Neo4j 提供的获取或创建唯一节点功能的功能(在这种情况下是支持图)。

顺便说一句 - 有没有办法使用非数字 ID?

Node m = framedGraph.addVertex("http://example.org", Node.class);
System.out.println(n.equals(framedGraph.getVertex("http://example.org", Node.class)));

印刷false

4

1 回答 1

3

Neo4j 和大多数蓝图的 Graph 实现忽略了 ID 参数。除了 TinkerGraph,它们通常都分配自己的 ID,而没有创建自己的方法。您始终可以使用IdGraph来帮助模拟您自己的 ID。

蓝图不保留“获取或创建”的概念。您必须自己实现它,或者我认为可以深入到 Neo4j 代码中来实现它,并期望您的代码不再能够从一个图形移植到另一个图形。这样,也许您可​​以构建一个类似于IdGraph公开getOrCreate()方法的图形包装器实现。至少这样,您仍然可以使用Graph接口,并且此类逻辑被封装在其中。当然,这无助于直接在 Frames 中启用此类功能。

于 2013-10-18T10:16:10.497 回答