0

ツリー内のノードの 1 つをルート ノードとして設定するにはどうすればよいですか? インデックスが 115 から始まるとしますが、ドット ネット アプリケーションで Neo4jClient を使用してデータベースに接続すると、ルート ノードが null として取得されますか? 任意のノードをルート ノードとして設定できますか?

4

2 に答える 2

1

標準 API を使用することはできませんが、Java コードを実行できると仮定して、ちょっとしたトリックを紹介します。新しいルート ノードを作成できますが、ノード ID を変更する方法はないと思います。

public class RootNodeCreator {

    /**
     * Create the root node. Make sure the database is stopped when running this.
     *
     * @param pathToDatabase path to the database.
     */
    public void createRoot(String pathToDatabase) {
        BatchInserter inserter = BatchInserters.inserter(pathToDatabase);
        inserter.createNode(0, new HashMap<String, Object>());
        inserter.shutdown();
    }
}

そしてテスト:

@Test
public void verifyRootCreation() throws IOException {
    TemporaryFolder temporaryFolder = new TemporaryFolder();
    temporaryFolder.create();

    GraphDatabaseService database = new GraphDatabaseFactory().newEmbeddedDatabase(temporaryFolder.getRoot().getAbsolutePath());
    Transaction tx = database.beginTx();
    try {
        database.getNodeById(0).delete();
        tx.success();
    }
    finally {
        tx.finish();
    }


    try {
        database.getNodeById(0);
        fail();
    } catch (NotFoundException e) {
        //ok
    }

    database.shutdown();

    new RootNodeCreator().createRoot(temporaryFolder.getRoot().getAbsolutePath());

    database = new GraphDatabaseFactory().newEmbeddedDatabase(temporaryFolder.getRoot().getAbsolutePath());
    assertNotNull(database.getNodeById(0));
}
于 2013-08-25T23:51:15.540 に答える
0

これは REST API 経由では不可能なため、Neo4jClient でサポートすることはできません。

于 2013-09-04T01:19:48.690 に答える