如何在gremlin-java 2.6.0中使用T.in

时间:2014-12-28 05:58:02

标签: java scala gremlin

我正在尝试使用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

感谢您的帮助。

1 个答案:

答案 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>