Пользовательский запрос: агрегировать результаты в @QueryResult - PullRequest
0 голосов
/ 09 июля 2019

У меня есть такие объекты:

Pattern{
  List<Image> images;
}

Image{
  List<User> voters
}

User {
  ...
}

Пользователь может голосовать за одно или несколько изображений, одно или несколько изображений могут представлять шаблон.

Я пытаюсь получить шаблон по его шаблону.id, и мне нужно извлечь также его изображения, а для каждого изображения - его избирателей.

Мой запрос:

@Query("MATCH (p:Pattern {id : {id}}) "
            + "OPTIONAL MATCH (p)-[ima:SUBMITTED_TO_REPRESENT]-(i)  "
            + "OPTIONAL MATCH (i)-[v:VOTE_FOR_IMG]-(u:User) "
            + "return p, ima, collect(i), v, collect(u)")
    Optional<Pattern> fetchPattern(String id);

Это работает, потому что я получаю результат в объекте Pattern.Но мне нужно получить результат в @QueryResult PatternInfo, который немного отличается от объекта Pattern, но не для указанных выше полей:

@QueryResult
@Data
@Getter
@Setter
@NoArgsConstructor
PatternInfo{
  ...
  private List<Image> images;
}

Когда я пытаюсь получить запрос выше в PatternInfo:

@Query("....")
Optional<PatternInfo> fetchPattern(String id);

Тогда я получаю ошибку

Неверный размер результата: ожидается не более 1

Когда я запускаю запрос в браузере neo4j, я получаю только 1 результатс массивом изображений и массивом избирателей.

Есть идеи о том, как можно получить эти данные в @QueryResult?

...