gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:38:10 25 4
gpt4 key购买 nike

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

关于java - OrientDB在java代码中创建边约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29792626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com