我正在尝试使用gremlin-java驱动程序在Scala中调用has来使用T.in标记。我试过传递它,数组,列表,设置,序列和只是一个字符串,但无论我发送什么,我得到这个错误,
Execution exception[[IllegalArgumentException: Invalid condition: Set(typeA, typeB)]]
我试图这样做,
new GremlinPipeline(g).V().has("type",T.in, Set("typeA", "typeB"))
在直接的Gremlin中,g.V().has("type", T.in, ["typeA","typeB"])
工作正常但我无法使用gremlin-java驱动程序。
has()的签名是,
GremlinFluentPipeline<S,? extends com.tinkerpop.blueprints.Element> has(String key, Tokens.T compareToken, Object value)
参数:
key - 要检查的属性键
compareToken - 使用
的比较
value - 要在
但是我无法弄清楚我必须如何传递价值才能被接受
gremlin-java 2.6.0(docs)
斯卡拉2.11.1
土卫六0.5.2
感谢您的帮助。
答案 0 :(得分:0)
不确定Scala,但这是Java中的一个工作示例:
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
import com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory;
import com.tinkerpop.gremlin.Tokens.*;
import com.tinkerpop.gremlin.java.GremlinPipeline;
import java.util.Arrays;
/**
* @author Daniel Kuppitz (daniel at thinkaurelius.com)
*/
public class App {
public static void main(final String[] args) throws Exception {
final TinkerGraph g = TinkerGraphFactory.createTinkerGraph();
new GremlinPipeline<Vertex, Vertex>(g).V()
.has("name", T.in, Arrays.asList("marko","josh")).map()
.forEach(System.out::println);
}
}
如果您执行上述程序,您将获得以下输出:
{name=marko, age=29}
{name=josh, age=32}
最后但并非最不重要的是,这些是我使用的依赖项:
<dependency>
<groupId>com.tinkerpop.blueprints</groupId>
<artifactId>blueprints-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.tinkerpop.gremlin</groupId>
<artifactId>gremlin-java</artifactId>
<version>2.6.0</version>
</dependency>