Neo4j - 将 CQL 返回结果映射到 List<POJO>

Posted

技术标签:

【中文标题】Neo4j - 将 CQL 返回结果映射到 List<POJO>【英文标题】:Neo4j - Mapping CQL Return Result to List<POJO> 【发布时间】:2016-11-14 13:04:23 【问题描述】:

我创建了 CQL 查询以返回多个列表对象。但是此对象值是从两个不同的数组组合而成的。我想将此值列表解析为 List 对象,而无需使用 JPA 或 OGM 手动解析。

在我的 POJO 类中:

private String DIST_ID;

private long PV;

private String POST_DATE;

在我的回购界面中:

@Query("MATCH(DST:Distributor) WITH DST AS DSTS, DST.PV AS array_one, DST.POST_DATE AS array_two UNWIND RANGE(0, SIZE(array_one) - 1) AS i WITHDIST_ID: DSTS.DIST_ID ,PV: array_one[i],POST_DATE: array_two[i] AS Odh RETURN Odh;")
public List<List<String>> getAllPVForMonth();

当我调用此方法时,结果低于[在 Junit 中测试]

[DIST_ID=305594091, PV=110, POST_DATE=28-Sep-16, DIST_ID=305594191, PV=503, POST_DATE=30-Sep-16]

我想将此结果转换为 pojo 对象列表。我不想将 List&lt;List&lt;String&gt;&gt; 解析为 List&lt;POJO&gt;。任何想法请分享您的输入。

【问题讨论】:

我对Spring没有太多经验,但是您是否尝试过将接口定义为投影? docs.spring.io/spring-data/jpa/docs/current/reference/html/… 【参考方案1】:

官方Spring data Neo4j documentation好像有这个描述

public interface MovieRepository extends GraphRepository<Movie> 

    @Query("MATCH (movie:Movie)-[r:RATING]->(), (movie)<-[:ACTS_IN]-(actor:Actor) " +
           "WHERE movie.id=0 " +
           "RETURN movie as movie, COLLECT(actor) AS 'cast', AVG(r.stars) AS 'averageRating'")
    MovieData getMovieData(String movieId);

    @QueryResult
    public class MovieData 
        Movie movie;
        Double averageRating;
        Set<Actor> cast;
    


【讨论】:

以上是关于Neo4j - 将 CQL 返回结果映射到 List<POJO>的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j CQL |create &merge

Neo4j CQL |create &merge

neo4j CQL 使用

Neo4j基本操作

neo4j 一些常用的CQL

Neo4j Cypher 语言学习