【发布时间】:2021-02-19 09:31:35
【问题描述】:
在 Spring Boot 2.3.4 之前,我一直在使用 @QueryResult 注释将一些自定义 Cypher 查询响应映射到 POJO。我现在正在测试 Spring Boot 2.4 first RC,并尝试按照说明如何删除 OGM,因为支持已被删除。我成功地用这里提供的注释替换了其他注释: https://neo4j.github.io/sdn-rx/current/#migrating 但我现在留下了没有指定任何内容的 @QueryResult 注释。当我删除它们时,会出现映射错误:
org.springframework.data.mapping.MappingException: Could not find mappable nodes or relationships inside Record
我查看了一些映射解释,但事情是这样的:我的自定义 POJO 不代表数据库中的任何实体,它们也不代表实体的一部分。它们是来自不同节点的相当相关的位。 让我举例说明: 我想从 a 中获取所有作为 MY_REL 关系目标的 b 节点:
(a:Node {label:"my label"})-[:MY_REL]->(b:Node)
出于我的目的,我不需要在响应中获取 nodes,所以我的 POJO 只有 2 个属性:
- 一个“源”字符串,它是开始节点的标签
- 一个“目标”字符串集,它是端节点标签的列表
我返回这个:
RETURN a.label AS source, COLLECT(b.label) AS targets
我的 POJO 只是简单地用 @QueryResult 注释,以便完成映射。 有谁知道如何使用 SB 2.4 候选版本重现这种行为?正如我所说,删除现在有问题的注释会提示我映射错误,但我不知道应该如何替换它。
【问题讨论】:
标签: java spring-boot neo4j spring-data-neo4j neo4j-ogm