2016-11-14 5 views
0

Я создал запрос CQL для возврата нескольких объектов списка. Но эти значения объекта объединены из двух разных массивов. Я хочу проанализировать этот список значений для объектов списка без использования ручного разбора с использованием 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; 
    } 

} 
Смежные вопросы