Java OrientDB可以';不要用方向来获取边

Java OrientDB可以';不要用方向来获取边,java,graph,orientdb,Java,Graph,Orientdb,我试图识别一条具有起始顶点和结束顶点的边 为此,我打电话: vertexStart.getEdges(Direction.OUT, relationshipId) 它似乎总是空的 获取传入的边似乎是可行的,但我两者都需要 vertexStart.getEdges(Direction.IN, relationshipId) relationshipId是边的标签 Iterable<Vertex> startNodes = this.getVertexList(storage.get

我试图识别一条具有起始顶点和结束顶点的边

为此,我打电话:

vertexStart.getEdges(Direction.OUT, relationshipId)
它似乎总是空的

获取传入的边似乎是可行的,但我两者都需要

vertexStart.getEdges(Direction.IN, relationshipId)
relationshipId是边的标签

Iterable<Vertex> startNodes = this.getVertexList(storage.getStartNode(), graph);
            Iterable<Vertex> endNodes = this.getVertexList(storage.getEndNode(), graph);

            for (Vertex startNode : startNodes)
            {
                for (Vertex endNode : endNodes)
                {
                    String edgeClass = "class:" + storage.getId();
                    Edge edge = startNode.addEdge(edgeClass, endNode);

                    for (Map.Entry<String, Object> entry : storage.getProperties().entrySet())
                    {
                        edge.setProperty(entry.getKey(), entry.getValue());
                    }
                    edge.setProperty(Constants.TAG_HASH, HashCreator.sha1FromRelationship(storage));
                    edge.setProperty(Constants.TAG_SNAPSHOT_ID, snapshotId);
                }
            }
            graph.commit();
Iterable startNodes=this.getVertexList(storage.getStartNode(),graph);
Iterable endNodes=this.getVertexList(storage.getEndNode(),graph);
用于(顶点起始节点:起始节点)
{
用于(顶点端点节点:端点节点)
{
字符串edgeClass=“class:”+storage.getId();
Edge Edge=startNode.addEdge(edgeClass,endNode);
对于(Map.Entry:storage.getProperties().entrySet())
{
setProperty(entry.getKey(),entry.getValue());
}
setProperty(Constants.TAG_HASH,HashCreator.sha1fromrationship(storage));
setProperty(Constants.TAG_SNAPSHOT_ID,snapshotId);
}
}
graph.commit();

用于创建结构。

我试图重现您的问题,但在我的案例中效果良好。 我创建了这个图表

顶点#10:0有一条输入边和一条输出边

我用了这个密码

Vertex v = g.getVertex("#10:0");

System.out.println("OUT");
Iterable<Edge> itOut=v.getEdges(Direction.OUT, "E");
for(Edge e:itOut){
    System.out.println(e.getId());
}

System.out.println("IN");
Iterable<Edge> itIn=v.getEdges(Direction.IN, "E");
for(Edge e:itIn){
    System.out.println(e.getId());
}
Vertex v=g.getVertex(#10:0”);
System.out.println(“out”);
Iterable itOut=v.GetEdge(方向为“E”);
用于(边缘e:itOut){
System.out.println(e.getId());
}
系统输出打印项次(“输入”);
Iterable itIn=v.GetEdge(方向为“E”);
用于(边缘e:itIn){
System.out.println(e.getId());
}
我得到了


希望有帮助。

您使用的orientdb版本是什么?编译组:'com.orientechnologies',名称:'orientdb graphdb',版本:'2.2.11'@Alessandrororota您知道吗?您确定顶点有凸出边吗?它们是否可能只有传入的边?按照上面的代码,应该不可能创建没有两个顶点的边。存储边的方式可能有问题吗?我将用代码更新主帖子。