获取TraversalDescription的正确方法是什么?

时间:2014-06-27 09:42:50

标签: spring-data-neo4j

我正在使用SpringRestGraphDatabaseSDN 3.1.0neo4j 2.1.2

我正在努力找到如何获取TraversalDescription实例的方法。 我看到TraversalDescription traversalDescription = Traversal.description()已被弃用。 但这很有效!

其他地方建议的其他方式:

TraversalDescription traversalDescription = new TraversalDescriptionImpl();
自从TraversalDescriptionImpl

移除neo4j 2.x后,

无效

neo4j用户指南中建议的第三种方式是GraphDatabaseService

TraversalDescription traversalDescription = graphDatabaseService.traversalDescription()

然后我得到了:

Caused by: java.lang.UnsupportedOperationException: Only builtin paths supported
    at org.neo4j.rest.graphdb.traversal.RestTraversal.evaluator(RestTraversal.java:96)

有什么想法吗?

谢谢, 米兰

1 个答案:

答案 0 :(得分:0)

traversalDescription = graphDatabaseService.traversalDescription()

确实是在neo4j 2.x(嵌入式或REST)中获取TraversalDescription()的正确方法。

您收到的邮件中显示的问题不是您无法获取 TraversalDescription,事实上它确认您获得了一个UnsupportedOperation ,然后尝试用它public RestTraversalDescription filter(Predicate<Path> pathPredicate) { if (pathPredicate == Evaluators.all()) return add("return_filter",toMap("language","builtin", "name","all")); if (pathPredicate == Evaluators.excludeStartPosition()) return add("return_filter",toMap("language","builtin", "name","all_but_start_node")); throw new UnsupportedOperationException("Only builtin paths supported"); } public RestTraversalDescription evaluator(PathEvaluator evaluator) { if (evaluator == Evaluators.all()) return add("return_filter",toMap("language","builtin", "name","all")); if (evaluator == Evaluators.excludeStartPosition()) return add("return_filter",toMap("language","builtin", "name","all_but_start_node")); throw new UnsupportedOperationException("Only builtin paths supported"); } public RestTraversalDescription evaluator(Evaluator evaluator) { if (evaluator == Evaluators.all()) return add("return_filter",toMap("language","builtin", "name","all")); if (evaluator == Evaluators.excludeStartPosition()) return add("return_filter",toMap("language","builtin", "name","all_but_start_node")); throw new UnsupportedOperationException("Only builtin paths supported"); }

如果没有看到更多代码,我无法告诉您这是什么,但请查看相关的源代码(github):

{{1}}

您将根据您传入的参数(或者您可以查看堆栈跟踪中给出的行号)知道这些方法中的哪一个具体抛出异常,然后将您的实现更改为确保其中一个if评估为true,这样就无法达到投掷。