0

嗨,我有一个接口和一个相应的实现类,例如:

public interface IActor extends VertexFrame {

    @Property(ActorProps.nodeClass)
    public String getNodeClass();

    @Property(ActorProps.nodeClass)
    public void setNodeClass(String str);

    @Property(ActorProps.id)
    public String getId();

    @Property(ActorProps.id)
    public void setId(String id);

    @Property(ActorProps.name)
    public String getName();

    @Property(ActorProps.name)
    public void setText(String text);

    @Property(ActorProps.uuid)
    public String getUuid();

    @Property(ActorProps.uuid)
    public void setUuid(String uuid);

    @Adjacency(label = RelClasses.CoActors, direction = Direction.OUT)
    public Iterable<IActor> getCoactors();
}

我使用 OrientDB 看起来像这样。我对 Neo4j 也有类似的实现:

Graph graph = new OrientGraph("remote:localhost/actordb");
FramedGraph<Graph> manager = new FramedGraphFactory().create(graph);
IActor actor = manager.frame(((OrientGraph)graph).getVertexByKey("Actor.uuid",uuid), IActor.class);

上述工作,但问题是在这种情况下或类似情况下,因为类 Actor 的两个顶点之间存在关系,可能存在图循环。有没有办法通过注释或其他方式(例如通过管理器)定义在特定 @Adjacency 的 x 步后停止,这样就不会永远存在?如果@GremlinGroovy(https://github.com/tinkerpop/frames/wiki/Gremlin-Groovy)注释是答案,你能举个例子吗?

4

1 回答 1

0

我不确定我是否理解问题/问题。(您说“可能”,但实际上并没有证明存在问题!)

  • 问题是顶点/帧中存在循环,并且(您认为)加载对象会导致无限循环吗?
  • 您是否能够证明加载带有循环的顶点/帧时存在问题?(给我看代码/问题)

据我了解,管道将lazy-load对象(仅在需要时加载)。帧(我想)只在请求时加载相邻的帧。基本上,据我所知,没有问题。

示例(Groovy)

// create some framed vertices
Person nick = createPerson(name: 'Nick')
Person michail = createPerson(name: 'Michail')

// create a recursive loop
nick.addKnows(michail)
michail.addKnows(nick)

// handles recursion = true!
Person nick2 = framedGraph.getVertex(nick.asVertex().id, Person)
assert nick2.knows.knows.knows.knows.knows.name == 'Michail'
于 2015-04-15T02:07:50.143 回答