【问题标题】:How to parameterized Gremlin query in Java?如何在 Java 中参数化 Gremlin 查询?
【发布时间】:2016-04-08 20:05:50
【问题描述】:

我有兴趣在 Java 代码中参数化 Gremlin 查询,就像我们在使用 PreparedStatement 进行 SQL 查询时所做的一样(例如:statement.setString(int, String), statement.setInt(int, int))。

请告诉我,我们能否在 Java 中为 Gremlin 查询做这种事情。

提前致谢。

问候, 卡马尔

【问题讨论】:

    标签: titan gremlin rexster


    【解决方案1】:

    对于那些在此处寻找 Titan 1.x 和 TinkerPop 3.x 答案的人:

    gremlin> cluster = Cluster.open()
    ==>localhost/127.0.0.1:8182
    gremlin> client = cluster.connect()
    ==>org.apache.tinkerpop.gremlin.driver.Client$ClusteredClient@412c995d
    gremlin> client.submit("g.V(start).valueMap(m)",[start:1L, m:(['name','age'] as String[])]).all().get()
    ==>result{object={name=[marko], age=[29]} class=java.util.HashMap}
    

    【讨论】:

      【解决方案2】:

      https://github.com/tinkerpop/rexster/wiki/RexPro-Java查看此内容

      如果可能,请参数化 Gremlin 脚本,因为这会带来更好的整体性能。上面的例子可以作为参数化请求来完成,如下所示:

      RexsterClient client = RexsterClientFactory.open("localhost", "tinkergraph");
      List<Map<String, Object>> results = client.execute("g.v(start).map", 
      new HashMap<String, Object>(){{
          put("start", 1);
      }});
      Map<String, Object> map = results.get(0);
      System.out.println(map.get("name"));
      

      阿克沙耶

      【讨论】:

      • 嗨 Akshaya,非常感谢您的回复。
      • 您好 Akshaya,非常感谢您的回复。但这并不能解决我的要求。由于此参数化适用于 'gv(start).map' 但如果我将其更改为 'gv(1).map' 它不起作用,并且对于像 'g=rexster.getGraph(\"geograph\") 这样的查询也有参数化;gVmap('1','2','3')' 不起作用(这里我想用相应的 propertyKey 替换 1,2 & 3)。谢谢,
      • 您可以将List 作为参数传递,但我认为您必须在脚本中手动将其转换为数组以调用map()。我有一种感觉,传递 String 数组只会将其转换为 List 所以无论哪种方式你都必须进行转换(但也许值得一试)。
      • 嗨斯蒂芬,我很抱歉,但我不明白你的解决方案。我使用了以下代码: String script = "g=rexster.getGraph(\"geograph\");g.V.map('1','2','3')"; HashMap hashMap = new HashMap(); hashMap.put("1", propertyKey1); hashMap.put("2", propertyKey2); hashMap.put("3", propertyKey3); List> results = getClient().execute(script, hashMap);但是 1,2,3 并没有被值替换
      • 不确定您遇到了什么错误,但我认为这不会奏效。您不能对变量使用数值。用“a”、“b”、“c”替换“1”、“2”和“3”,我希望它可以工作
      猜你喜欢
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多