Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入后无法从远程读取Gremlin数据_Java_Graph Databases_Gremlin_Tinkerpop - Fatal编程技术网

Java 写入后无法从远程读取Gremlin数据

Java 写入后无法从远程读取Gremlin数据,java,graph-databases,gremlin,tinkerpop,Java,Graph Databases,Gremlin,Tinkerpop,我使用Java通过以下方式连接到“远程”(localhost:8182)Gremlin服务器g: traversalSource = traversal().withRemote(DriverRemoteConnection.using("localhost", 8182, "g")); 然后,我写了一些节点,如下所示: traversalSource.addV("TenantProfile"); 从连接到同一台Gremlin服务器的Gremlin控制台,我可以看到所有创建的节点和边 gre

我使用Java通过以下方式连接到“远程”(localhost:8182)Gremlin服务器g

traversalSource = traversal().withRemote(DriverRemoteConnection.using("localhost", 8182, "g"));
然后,我写了一些节点,如下所示:

traversalSource.addV("TenantProfile");
从连接到同一台Gremlin服务器的Gremlin控制台,我可以看到所有创建的节点和边

gremlin> g==>graphtraversalsource[tinkergraph[vertices:42 edges:64], standard]
查询也可以工作,但如果我从Java中读取graph,它的结果是空的,所以查询例如

traversalSource.V()
                        .has("label", TENANT_PROFILE_LABEL)
                        .has("fiscal id", "04228480408")
                        .out(OWNS_LABEL)
                        .has("type", "SH")
                        .values("description")
                        .toList();
返回emtpy列表

有谁能帮我解决这个问题吗?
谢谢。

作为对Stephen的回复,我发布了
iterate()

for(最终映射edgePropertyMap:edgePropertyTable){
edgeTraversal=traversalSource
.V(顶点.get(edgePropertyMap.get(从_键)))
.addE(edgeLabel)
.to(顶点.get(edgePropertyMap.get(to_键));
最终设置edgePropertyNames=edgePropertyMap.keySet();
for(最终字符串nodePropertyName:EdgePropertyName)
如果((!nodePropertyName.equals(从_键))&(!nodePropertyName.equals(到_键))){
最终字符串edgePropertyValue=edgePropertyMap.get(nodePropertyName);
edgeTraversal=edgeTraversal.property(nodePropertyName,edgePropertyValue);
}
edgeTraversal.as(edgePropertyMap.get(标识符_键)).iterate();
}

无论如何,如果不存在
iterate()
,如何从控制台内部看到节点和边?它们是如何在远程服务器上“最终确定”的?

作为对Stephen的回复,我在
iterate()之前发布了最后的说明

for(最终映射edgePropertyMap:edgePropertyTable){
edgeTraversal=traversalSource
.V(顶点.get(edgePropertyMap.get(从_键)))
.addE(edgeLabel)
.to(顶点.get(edgePropertyMap.get(to_键));
最终设置edgePropertyNames=edgePropertyMap.keySet();
for(最终字符串nodePropertyName:EdgePropertyName)
如果((!nodePropertyName.equals(从_键))&(!nodePropertyName.equals(到_键))){
最终字符串edgePropertyValue=edgePropertyMap.get(nodePropertyName);
edgeTraversal=edgeTraversal.property(nodePropertyName,edgePropertyValue);
}
edgeTraversal.as(edgePropertyMap.get(标识符_键)).iterate();
}

无论如何,如果不存在
iterate()
,如何从控制台内部看到节点和边?它们怎么会在远程服务器上“最终确定”呢?

我忘了在插入结束时调用
iterate()
(我想编辑删除了三个点),我不确定是否要解决这个问题。如果您有相同的图形数据,并且您的遍历在Gremlin控制台中针对这些数据工作,那么我想不出任何原因为什么您不能从Java获得相同的结果,特别是如果您使用类似于
toList()
的终端步骤终止遍历。我认为您必须尝试提供一个更完整的示例,其中包含一些重现此问题的示例数据。我刚刚注意到的一点是,您将“>graphtraversalsource[tinkergraph[vertices:42 Edge:64],standard]”作为您的数据存在的证据。这是在演示到图形的本地嵌入式连接,而不是远程连接,这意味着您可能并没有真正证明Gremlin控制台正在从Gremlin服务器获取数据。同样,您可能希望编辑您的问题,以包含该问题的更完整演示。我忘了在插入结束时调用
iterate()
(我想编辑删除了三个点),我不确定是否能够理解该问题。如果您有相同的图形数据,并且您的遍历在Gremlin控制台中针对这些数据工作,那么我想不出任何原因为什么您不能从Java获得相同的结果,特别是如果您使用类似于
toList()
的终端步骤终止遍历。我认为您必须尝试提供一个更完整的示例,其中包含一些重现此问题的示例数据。我刚刚注意到的一点是,您将“>graphtraversalsource[tinkergraph[vertices:42 Edge:64],standard]”作为您的数据存在的证据。这是在演示到图形的本地嵌入式连接,而不是远程连接,这意味着您可能并没有真正证明Gremlin控制台正在从Gremlin服务器获取数据。同样,您可能希望编辑您的问题,以包含更完整的问题演示。您可能应该删除此答案,而不是编辑您的问题,因为它现在看起来好像您对您的查询有答案一样。也就是说,我不认为这段代码对诊断问题特别有帮助。您可能应该删除此答案,而不是编辑您的问题,因为它现在看起来好像您对您的查询有答案。也就是说,我不认为这段代码对诊断问题特别有用。
for (final Map<String, String> edgePropertyMap : edgePropertyTable) {
            edgeTraversal = traversalSource
                            .V(vertices.get(edgePropertyMap.get(FROM_KEY)))
                            .addE(edgeLabel)
                            .to(vertices.get(edgePropertyMap.get(TO_KEY)));

            final Set<String> edgePropertyNames = edgePropertyMap.keySet();
            for (final String nodePropertyName : edgePropertyNames)
                if ((!nodePropertyName.equals(FROM_KEY)) && (!nodePropertyName.equals(TO_KEY))) {
                    final String edgePropertyValue = edgePropertyMap.get(nodePropertyName);
                    edgeTraversal = edgeTraversal.property(nodePropertyName, edgePropertyValue);
                }

            edgeTraversal.as(edgePropertyMap.get(IDENTIFIER_KEY)).iterate();
        }