【问题标题】:How to use T.in with gremlin-java 2.6.0如何在 gremlin-java 2.6.0 中使用 T.in
【发布时间】:2014-12-28 05:58:02
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

    标签: java scala gremlin


    【解决方案1】:

    不确定 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>
    

    【讨论】:

    • 谢谢,在查看了您的代码后,我意识到它可能需要一个 java.util.list 并且不知道如何处理 Scala 的 List 版本。使用 Scala 的 JavaConverters 和 .asJava 似乎已经修复了它。 import scala.collection.JavaConverters._new GremlinPipeline(g).V().has("type",T.in, List("typeA", "typeB").asJava)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2016-04-08
    • 2018-11-03
    • 2021-03-20
    相关资源
    最近更新 更多