簡體   English   中英

OrientDB在Java代碼中的邊緣上創建約束

[英]OrientDB create constraints on edges in java code

我在orientDB中有幾個節點,我想在它們之間的邊緣上施加約束。 例如,我有一個主節點類型和一個從節點類型的節點,並且我希望僅在主節點和從節點之間而不是從節點之間具有邊。

我想通過對主從之間的關系約束進行限制。 使用約束是否可能?

編輯:我試圖這樣做,但它不起作用,我仍然可以添加一個指向主服務器的從屬服務器。 使用圖形數據庫時如何訪問架構?

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

如果約束是正確的,那么最后一個應該不起作用。

您可以使用以下模式執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM