繁体   English   中英

在 CassandraCSharpDriver.Graph 中使用 SimpleGraphStatement 的树查询抛出“无法转换为 org.apache.tinkerpop.gremlin.structure.Element”

[英]Tree query using SimpleGraphStatement in CassandraCSharpDriver.Graph throws “cannot cast to org.apache.tinkerpop.gremlin.structure.Element”

我可以在 Datastax Studio 控制台中运行这个查询并返回一个树结果(尽管它是格式错误的 json,所有数据都在键而不是值中返回)。

g.V().has("mything","key", "mykey")
.emit()
.repeat(outE("contains").inV())
.dedup()

.tree()
.by(
    group()
    .by(label)
    .by(
            valueMap()
            .unfold()
            .group()
            .by(select(keys))
            .by(select(values).unfold())
        )
    .unfold()
    .unfold()
)

控制台结果如下所示(注意奇怪的 json 格式,数据在 json 键中?):

{
  "mystuff={dynamicproperties={stuff}, key=mykey}": {
    "contains={}": {
      "astuff={dynamicproperties=stuff, key=mykey}": {},
      "bstuff={dynamicproperties={stuff}, key=mykey}": {},
      "container={key=mykey}": {
        "contains={}": {
          "thing={key=mykey}": {
            "contains={}": {
              "cstuff={dynamicproperties={stuff}, key=mykey}": {}
            }
          }
        }
      }
    }
  }
}

但是,当我使用 CassandraCSharpGraph 在 Gremlin.NET 中将其作为 SimpleGraphStatement 运行时,它会引发此异常: "java.util.HashMap$Node cannot be cast to org.apache.tinkerpop.gremlin.structure.Element"

这是我运行查询的 C# 代码:

var graphResultSet = cassandraGraphProvider.Session.ExecuteGraph(new SimpleGraphStatement(query));

我能够将语句一直运行到 .dedup() 行并在 graphResultSet 中获取顶点,但是在它开始抛出错误时添加下面的树代码。

我正在使用 CassandraCSharpDriver.Graph 2.1、CassandraCSharpDriver 3.14、Gremlin.Net 3.2.9。 服务器正在运行 dse cassandra 5.1.14 和 gremlin 3.2.11。

在 CassandraCSharpDriver 中运行树查询的技巧是什么? 关于下一步我可以尝试什么的任何想法?

The real issue with Tree right now is denoted here in TINKERPOP-2063 - Gremlin Language Variants like C# do not currently support the deserialization of that object so you get that ugly "java.util.HashMap$Node cannot be cast to org.apache. tinkerpop.gremlin.structure.Element”。 在这一点上,您唯一的解决方法是提交带有驱动程序的脚本(Studio 的方式),但随后您需要处理看起来很粗糙的 JSON。 该表示与 JSON 不支持非字符串键的问题有关(即不能像 Java 那样使用object )。 所以,我相信所有的数据都在那里,但遗憾的是,使用它并不容易。 正如 JIRA 问题还指出的那样, subgraph()步骤也存在类似的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM