有没有办法将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?
答案 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));