Край не создан в сеансе Orient DB 3 - PullRequest
0 голосов
/ 08 мая 2019

Попытка соединить вершины с родительской вершиной.Родительская вершина создается в первый раз, и дочерние вершины связаны с ней.

Пример:

        // Setup
        OrientDB db = new OrientDB("remote:localhost:2424", "admin", "admin", OrientDBConfig.defaultConfig());
        if(db.exists("temp")){
            db.drop("temp");
        }
        db.createIfNotExists("temp", ODatabaseType.PLOCAL);
        ODatabaseSession session = db.open("temp", "admin", "admin");

        session.createClassIfNotExist("VBase", OClass.VERTEX_CLASS_NAME);
        session.createClassIfNotExist("VTest", OClass.VERTEX_CLASS_NAME);
        session.createClassIfNotExist("ETest", OClass.EDGE_CLASS_NAME);


        // Phase 1
        session.begin();

        OVertex parent = session.newVertex("VBase");
        parent.save();

        Map<String, Object> params = new HashMap<>();
        params.put("ParentRID", parent.getIdentity());

        OVertex test = session.execute("sql",
                  "LET $a = CREATE VERTEX VTest SET name = 'John';" +
                        "CREATE EDGE ETest FROM :ParentRID TO $a;" +
                        "RETURN $a;", params)
                .vertexStream().findFirst().orElse(null);

        assert test != null;
        session.commit();


        // Phase 2
        session.begin();

        parent = session.execute("sql", "SELECT FROM VBase LIMIT 1;",new HashMap<>())
                .vertexStream().findFirst().orElse(null);

        params = new HashMap<>();
        params.put("ParentRID", parent.getIdentity());

        test = session.execute("sql",
                  "LET $a = CREATE VERTEX VTest SET name = 'John';" +
                        "CREATE EDGE ETest FROM :ParentRID TO $a;" +
                        "RETURN $a;", params)
                .vertexStream().findFirst().orElse(null);


        assert test != null;
        session.commit();


        // Done
        System.out.println(test.getIdentity());

Однако, поиск в студии показывает, что вторая вершина не связана:

MATCH {class:VBase}.out() {class:VTest, as:vt} RETURN vt;

Возвращает только 1 результат.График имеет вид:

enter image description here

...