OrientDB在java代码中创建边缘约束

时间:2015-04-22 09:03:11

标签: java orientdb

我在orientDB中有一些节点,我希望它们之间的边缘有约束。例如,我有一个节点类型Master和一个类型Slave,我想只在主服务器和从服务器之间有边缘,而不是在从服务器之间。

我想使用主从关系之间的约束来做到这一点。这可能是使用约束吗?

编辑:我试图这样做,但它不起作用,我仍然可以添加指向主人的奴隶。使用图形数据库时如何访问模式?

OrientGraph graph = new OrientGraph("remote:localhost/test");
    if (graph.getEdgeType("Ref") == null) {
        graph.createEdgeType("Ref");
    }
    if (graph.getVertexType("Element") == null) {
        graph.createVertexType("Element");
    }
    if (graph.getVertexType("SubElement") == null) {
        OrientVertexType subElementVertex = graph
                .createVertexType("SubElement");
        OrientVertexType elementVertex = graph.getVertexType("Element");
        subElementVertex
                .createProperty("parent", OType.LINK, elementVertex)
                .isMandatory();
    }

我用它来创建我的顶点和边缘:

Vertex page3 = graph.addVertex("class:Element");
Vertex doc1 = graph.addVertex("class:SubElement");
page3.setProperty("type", "page");
doc1.setProperty("type", "document");

Edge edge6 = graph.addEdge("class:Ref", page3, doc1, "Ref");
edge6.setProperty("properties", mapEdge);
edge6.setProperty("type", "document");

Edge edge7 = graph.addEdge("class:Ref", doc1, page3, "Ref");

如果约束是正确的,那最后一个应该不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用schema

执行此操作
Master master = database.getMetadata().getSchema().createClass("Master");

Slave slave = database.getMetadata().getSchema().createClass("Slave");
slave.createProperty("parent", OType.LINK, master);

使用图表:

OrientEdgeType edge = graph.createEdgeType("MyEdge");
Edge e = subElementVertex.addEdge("Ref", elementVertex );