2016-11-14 54 views
0

我创建了CQL查询以返回多个列表对象。但此对象值由两个不同的数组组合而成。我想将这个值列表解析为List对象,而无需使用手动解析使用JPA或OGM。Neo4j - 将CQL返回结果映射到列表<POJO>

在我的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 WITH{DIST_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<List<String>>List<POJO>。任何想法请分享您的意见。

+0

描述我不和春天有太多的经验,但你有没有试图定义一个接口作为投影? http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections – Davide

回答

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; 
    } 

} 
相关问题