我正在使用SpringRestGraphDatabase
,SDN 3.1.0
和neo4j 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)
有什么想法吗?
谢谢, 米兰
答案 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,这样就无法达到投掷。