Мне нужно использовать запрос gremlin в java, и я не знаю, как это сделать, потому что я попытался выполнить инструкции в https://github.com/tinkerpop/gremlin/wiki/Using-Gremlin-through-Java, но у меня нет никаких результатов, только исключение. Кто-то мне помогает.запрос gremlin через java
Ниже приведен пример запроса, который я должен использовать:
g.V.filter{it.AffiliatedDepartment != null}.copySplit(_().DepartmentDirector, _().inE.filter{it.label == 'Affiliated_Professor'}.outV.AffiliatedProfessor).fairMerge.
Я пытался в обоих способов, предложенных в официальной документации. компилирование Gremlin Groovy:
Pipe pipe = Gremlin.compile("_().filter{it.AffiliatedDepartment != null}.copySplit(_().DepartmentDirector, _().inE.filter{it.label == 'Affiliated_Professor'}.outV.AffiliatedProfessor).fairMerge");
pipe.setStarts(g.getVertices());
Я получаю java.lang.NoSuchFieldError: АСМАП
Использование JSR 223 GremlinGroovyScriptEngine:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("gremlin-groovy");
List results = new ArrayList();
Bindings bindings = engine.createBindings();
bindings.put("g", g);
bindings.put("v", g.getVertices());
engine.eval("v.filter{it.AffiliatedDepartment != null}.copySplit(_().DepartmentDirector, _().inE.filter{it.label == 'Affiliated_Professor'}.outV.AffiliatedProfessor).fairMerge", bindings);
я получаю javax.script.ScriptException с сообщением:
<p>groovy.lang.MissingMethodException:</p>
<p>No signature of method: com.tinkerpop.blueprints.impls.neo4j.Neo4jVertexIterable.filter() is applicable for argument types:
</div>
<div>
(Script1$_run_closure1) values: [[email protected]]
</p>
<p>Possible solutions: find(), first(), find(groovy.lang.Closure), sleep(long), with(groovy.lang.Closure) at
com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:110) at
javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)</p>
</div>
Ah работает. Ты бил меня минуткой. Это должно сработать. До этого он использовал 'VertexIterable', где гремлин ожидал объект Pipeline. – Nicholas