我以这种方式使用 janus-plugin 初始化 gremlin-script-engine:
GremlinScriptEngineManager engineManager = new DefaultGremlinScriptEngineManager();
engineManager.addPlugin(JanusGraphGremlinPlugin.instance());
engine = engineManager.getEngineByName("gremlin-groovy");
引擎通常使用一些 janus 元素(例如Multiplicity.ONE2MANY
)评估查询:
qu = "mgmt.makeEdgeLabel('"+ TEST_EDGE_LABEL+"').multiplicity(ONE2MANY).make();";
engine.evalWithManagementTransaction(qu);
...但是对于查询:
qu = "mgmt.makePropertyKey('"+TEST_PROPERTY_KEY+"')"
+ ".dataType(String.class).cardinality(Cardinality.SINGLE).make();";
我得到:
MissingPropertyException: No such property: SINGLE for class: org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
似乎脚本引擎尝试使用 org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
而不是 janus one org.janusgraph.core.Cardinality
。
PS:如果我在查询中使用类的全名org.janusgraph.core.Cardinality.SINGLE
或仅Cardinality
枚举的值(例如 just SINGLE
),那么一切正常。
如何删除 tinkerpop 导入或强制脚本引擎使用插件中的 janus 导入......或者更改 gremlin 查询是否有意义?