【问题标题】:Mapping Queries result set to domain objects in SDN 3.3.1.RELEASE将查询结果集映射到 SDN 3.3.1.RELEASE 中的域对象
【发布时间】:2015-07-03 01:23:30
【问题描述】:

我使用 SDN 3.3.1 创建了一个 POC,其中我在 Neo4j 服务器中部署了一个插件。该插件包含域对象、存储库和控制器。

在我的应用程序中,我正在对控制器进行休息调用以执行存储库方法并返回响应。

问题是在我的查询中,我返回了多个节点和关系。因此,为了映射响应,我使用 @QueryResult 创建了包装类,@ResultColumn 包含对每个查询的域对象的引用。这是因为每个查询都有不同的结果集。

因为,我的应用程序有大约 150 个这样的查询,我将不得不创建类似数量的中间包装类。 这是相当乏味的,并且随着越来越多的查询被添加,包装类的数量只会在未来增加。

有没有更聪明的方法来做到这一点?

我试图将我的所有域对象作为单个包装类中的引用。这样我就可以将它用于我的任何查询。但如果查询结果中不存在包装类中的任何字段,则会出现异常。

另一个问题是,我的一些查询被编写为返回连接到特定节点的所有不同节点,例如, 匹配 (a)-[rel]->(b)-[tempRel]->(tempNodes) 返回 b,tempRel,tempNodes

我不确定如何将此结果集映射到包装类。 有没有办法在不重构查询以匹配单个路径的情况下实现它?

问候,

拉胡尔

【问题讨论】:

    标签: neo4j cypher spring-data-neo4j


    【解决方案1】:

    让它在两个方向上忽略未知的类和字段是个好主意,也许作为类的附加注释,你能提出 Spring JIRA 问题吗?

    类似这样的东西,例如

    @QueryResult(requireFields=false, require=false)
    class MyResult {
        String name;
        int age;
    }
    

    但您仍然让他们专注于一个领域或用例,而不是所有 150 个用例中的一个,而是可能 15-30 个不同的用例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多