【问题标题】:throws NoRootNodeMappingException while projecting/mapping neo4j query result to an interface or DTO class在将 neo4j 查询结果投影/映射到接口或 DTO 类时抛出 NoRootNodeMappingException
【发布时间】:2021-09-10 06:12:56
【问题描述】:

我的查询非常简单,我正在做的投影遵循 [https://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#projections.interfaces]( Spring Data Neo4J 投影)文档。 我的代码:

@Query("MATCH (User {mobile:$mobile})-[:CONTACT]-(n:User)-[:STEPTAKER]-(s:Step) RETURN n.name AS name, s.count AS count")
    public List<StepList> findAllStepByMobile(String mobile);
    

interface StepList{
    String getName();
    int getCount();
}

错误: 2021-09-10 10:36:25.180 错误 18088 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet]:Servlet.service() 用于 servlet [dispatcherServlet] path [] 抛出异常 [请求处理失败;嵌套异常是 org.springframework.data.neo4j.core.mapping.NoRootNodeMappingException:在 org.springframework.data.neo4j.core.mapping.DefaultNeo4jPersistentEntity@ 的 Record 内找不到可映射节点或关系305b43ca] 有根本原因

org.springframework.data.neo4j.core.mapping.NoRootNodeMappingException: 在 org.springframework.data.neo4j.core.mapping 的 Record 中找不到可映射的节点或关系.DefaultNeo4jPersistentEntity@305b43ca

【问题讨论】:

    标签: java spring neo4j cypher


    【解决方案1】:

    如果你指定边缘类型应该有一个冒号,所以 [:STEPTAKER] 和 [:CONTACT]

    另外,当返回多列时,用逗号分隔它们

    返回 a.name 作为名称,s.count 作为计数

    【讨论】:

    • 已根据您的建议进行了更新,但仍然显示相同的错误
    • @NoorKhan 查询在 Neo4j 浏览器中执行时运行良好吗?
    • 是的,它工作正常,返回两列名称和计数。
    【解决方案2】:

    https://docs.spring.io/spring-data/neo4j/docs/6.2.0/reference/html/#projections.interfaces

    从上面的链接:

    “这里重要的是这里定义的属性与聚合根中的属性完全匹配”

    我认为这意味着您的 StepList 接口必须具有来自根类(我假设是用户)的属性子集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 2021-08-13
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多