0

我正在使用 Graphaware 提供的 Neo4j 框架开发 Neo4j 服务器扩展。

我想在我的回复中发送以下对象(简化以便您可以看到属性):

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

问题是杰克逊无法渲染 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.JsonNode您查看可以将 Neo4j 节点传递到哪个节点,以及一些关于生成的 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 回答