Tinkerpop框架@Adjacency到Orientdb LINKLIST

时间:2016-05-15 17:34:09

标签: orientdb tinkerpop

有没有办法将Tinkerpop Frames的@Adjacency注释属性映射到Orientdb LINKLIST?现在我有这样的事情:

interface Person {
    @Adjacency(label = "personCars", direction = Direction.OUT)
    Iterable<Car> getCars();
    @Adjacency(label = "personCars", direction = Direction.OUT)
    void addCar(Car car);
}

我希望将其映射到Orientdb数据库中的LINKLIST,以保持添加顶点的顺序。但这默认情况下映射到LINKBAG类型。是否有任何干净的解决方案来设置Orientdb将邻接映射到LINKLIST?

1 个答案:

答案 0 :(得分:1)

默认情况下,OrientDB使用一个集来处理边集合。有时,通过偏移访问边缘的有序列表会更好。例如:

person.createEdgeProperty(Direction.OUT, "Photos").setOrdered(true);

每次访问边缘集合时,边缘都会被排序。下面是一个以有序方式打印所有照片的示例。

for (Edge e : loadedPerson.getEdges(Direction.OUT, "Photos")) {
  System.out.println( "Photo name: " + e.getVertex(Direction.IN).getProperty("name") );
}

要访问基础边缘列表,您必须使用文档数据库API。以下是将第10张照片与最后一张照片交换的示例。

// REPLACE EDGE Photos
List<ODocument> photos = loadedPerson.getRecord().field("out_Photos");
photos.add(photos.remove(9));

来自official documentation