OrientDB 在 java 代码中创建边缘约束
OrientDB create constraints on edges in java code
我在 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");
如果约束正确,最后一个应该不起作用。
您可以使用 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 );
我在 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");
如果约束正确,最后一个应该不起作用。
您可以使用 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 );