eswara eswara - 6 months ago 82
Java Question

How can I get vertex and create edge in Orientdb

I have created two vertexes in two different class, and I am trying to create Edge in another class. How can I do this?

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);

}


how can I create edge between the above two vertex in another class any one help me

Answer

I tried your case with your code and following there's my example.

These are the main steps I advise you to follow:

  • Create classes and properties;
  • Insert the data;
  • Create the edges between the vertexes.

JAVA CODE:

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

Hi @eswara, consider this structure:

enter image description here

Now you can retrieve the vertices you're looking for and create an edge between them

JAVA CODE:

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();
    }
}
}

Output:

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

STUDIO:

enter image description here

Hope it helps

Comments