如何在Orientdb中获取顶点并创建边缘

时间:2016-05-05 09:18:41

标签: java orientdb

我在两个不同的类中创建了两个顶点,我试图在另一个类中创建Edge。我怎么能这样做?

class m1{

        OrientGraph  graph=factory.getTx();

        OrientVertexType v=graph.createVertexType("Delears");

        v.createProperty("ID", OType.INTEGER);

        v.createProperty("Name",OType.STRING);

        v.createProperty("Address", OType.STRING);
}

class m2{

        OrientVertexType v1=graph.createVertexType("SuperMarket");

        v1.createProperty("Item", OType.STRING);

        v1.createProperty("Code", OType.DOUBLE);

        v1.createProperty("Quantity", OType.INTEGER);

}

如何在另一个类中创建上述两个顶点之间的边缘,任何一个帮助我

1 个答案:

答案 0 :(得分:0)

我用你的代码尝试了你的案例,然后是我的例子。

这些是我建议您遵循的主要步骤:

  • 创建类和属性;
  • 插入数据;
  • 在顶点之间创建边。

JAVA代码:

import java.io.IOException;

import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.core.metadata.schema.OType;
import com.tinkerpop.blueprints.impls.orient.OrientEdge;
import com.tinkerpop.blueprints.impls.orient.OrientEdgeType;
import com.tinkerpop.blueprints.impls.orient.OrientGraph;
import com.tinkerpop.blueprints.impls.orient.OrientVertex;
import com.tinkerpop.blueprints.impls.orient.OrientVertexType;

public class Stack37046827 {

private static String remote = "remote:localhost/";

public static void main(String[] args) {

    try {

        String DBname = "Stack37046827";
        String currentPath = remote + DBname;

        OServerAdmin serverAdmin = new OServerAdmin(currentPath).connect("root", "root");

        OrientGraph g = new OrientGraph(currentPath);

        // OrientVertexType used to create classes

        OrientVertexType v = g.createVertexType("Delears");
        v.createProperty("ID", OType.INTEGER);
        v.createProperty("Name", OType.STRING);
        v.createProperty("Address", OType.STRING);

        OrientVertexType v1 = g.createVertexType("SuperMarket");
        v1.createProperty("Item", OType.STRING);
        v1.createProperty("Code", OType.DOUBLE);
        v1.createProperty("Quantity", OType.INTEGER);

        OrientEdgeType e = g.createEdgeType("myEdge", "E");

        // Once classes and properties are created, you can populate the DB

        // OrientVertex used to create the vertexes

        OrientVertex delears = g.addVertex("class:Delears");
        delears.setProperties("ID", "1");
        delears.setProperties("Name", "name1");
        delears.setProperties("Address", "address1");

        OrientVertex superMarket = g.addVertex("class:SuperMarket");
        superMarket.setProperties("Item", "item1");
        superMarket.setProperties("Code", "2");
        superMarket.setProperties("Quantity", "5");

        // OrientEdge to create the edge between vertexes

        OrientEdge e1 = g.addEdge(null, delears, superMarket, "myEdge");

        g.shutdown();

        serverAdmin.close();

    } catch (IOException e) {

        e.printStackTrace();

    }

}

}

STUDIO OUTPUT:

enter image description here

<强> EDITED

嗨@eswara,请考虑这个结构:

enter image description here

现在您可以检索您正在寻找的顶点并在它们之间创建边缘

JAVA代码:

import java.io.IOException;

import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.orient.OrientEdge;
import com.tinkerpop.blueprints.impls.orient.OrientGraph;
import com.tinkerpop.blueprints.impls.orient.OrientGraphFactory;

public class Stack37046827 {
private static String remote = "remote:localhost/";

public static void main(String[] args) {
    try {
        String DBname = "Stack37046827";
        String currentPath = remote + DBname;
        OServerAdmin serverAdmin = new OServerAdmin(currentPath).connect("root", "root");
        OrientGraphFactory factory = new OrientGraphFactory(currentPath);
        OrientGraph g = factory.getTx();
        Iterable<Vertex> delears = g.getVerticesOfClass("Delears");
        Iterable<Vertex> sMarkets = g.getVerticesOfClass("SuperMarket");
        for (Vertex delear : delears) {
            for (Vertex sMarket : sMarkets) {
                if (delear.getProperty("Name").equals("name0") && sMarket.getProperty("Item").equals("item0")) {
                    OrientEdge e1 = g.addEdge(null, delear, sMarket, "myEdge");
                    g.commit();
                    System.out.println(e1);
                }
            }
        }
        g.shutdown();
        serverAdmin.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

<强>输出:

e[#14:0][#12:0-myEdge->#13:0]

<强> STUDIO:

enter image description here

希望有所帮助