0

Graphaware が提供する Neo4j フレームワークを使用して、Neo4j サーバー エクステンションを開発しています。

応答で次のオブジェクトを送信する必要があります (属性を確認できるように簡略化されています)。

public class DiffResult {
    private Node fileOrFolder;
    private Node originalContent;
    private Path path;
}

問題は、Jackson が Node オブジェクトをレンダリングできないことです。どこかで NodeRepresentation クラスを見たことがありますが、Spring MVC コントローラーで適切に使用する方法もわかりません。

ノードを Neo4j REST Api のようにシリアル化したい (ドキュメントを参照: http://neo4j.com/docs/stable/rest-api-nodes.html#rest-api-get-node )

また、私が使用しているコントローラーも示します (これも単純化されています)。

@Controller
@RequestMapping("/diff")
public class FileSpaceDiffApi {

    private final GraphDatabaseService database;

    @Autowired
    public FileSpaceDiffApi(GraphDatabaseService database) {
        this.database = database;
    }

    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public List<DiffResult> diff(@QueryParam("fileSpaceId") Long fileSpaceId, @QueryParam("since") Long since) {
        List<DiffResult> results = new ArrayList<DiffResult>();
        Transaction tx = database.beginTx();
        try {
            Node startNode = database.getNodeById(fileSpaceId);
            DiffResult diffResult = new DiffResult();
            diffResult.setFileOrFolder(startNode);
            results.add(diffResult);
            tx.success();
        }
        finally {
            tx.close();
        }
        return results;
    }

}

理想的には、JSON でパスをレンダリングできるようにしたいと考えています。

4

1 に答える 1

2

Neo4j と同じ形式でノードを簡単に返す機能は (まだ) ありません。これは主に、Neo4j REST API が非常に汎用的であるため、多くのユースケースではおしゃべりで冗長すぎるためです。

com.graphaware.api.JsonNodeNeo4jノードを渡すことができるものと、生成されたJSONに何が存在するかに関するいくつかの構成(たとえば、ラベルを含めるかどうかなど)を確認することをお勧めします.

pom.xml に以下を追加することで使用できます。

 <dependency>
    <groupId>com.graphaware.neo4j</groupId>
    <artifactId>api</artifactId>
    <version>${graphaware.version}</version>
 </dependency>

パスに関しては、neo4j-algorithmsJsonPathにクラスがあり、目的を達成するのに役立ちます。次のリリースのコア フレームワークに喜んで移行します (それが本来あるべき場所です)。

于 2014-12-05T14:31:09.633 に答える