У меня есть такие объекты:
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?