У меня есть тема:
@Entity
public class Topic {
@Id
private int id;
private LocalDate date;
private String name;
private int points;
@JoinColumn(name = "user_id", nullable = false)
private User user;
}
Я получаю список тем в данную дату по методу jpa данных весны:
Список тем = topicRepository.findByDateBetween (начало, конец);который на выходе имеет, например:
Topic(id=1, date="2018-01-01", name="Java examples", User(...), 12)
Topic(id=2, date="2018-02-02", name="Java examples", User(...), 34)
Topic(id=3, date="2018-02-02", name="Java examples", User(...), 56)
Topic(id=4, date="2018-03-03", name="Java examples", User(...), 78)
Topic(id=5, date="2018-03-03", name="Java examples", User(...), 90)
То, что я пытаюсь достичь, это отфильтровать вывод результатов как (если дата && Пользователь имеет те же точки добавления)
Topic(id=1, date="2018-01-01", name="Java examples", User(...), 12)
Topic(id=2, date="2018-02-02", name="Java examples", User(...), 90)
Topic(id=4, date="2018-03-03", name="Java examples", User(...), 168)
Мое реальное решениевозвращает карту с датой в качестве ключа и суммированными точками в качестве значения, но мне нужно, чтобы в выводе было больше данных, таких как «Пользователь» или «Имя».
return topics.stream()
.collect(Collectors.groupingBy(Topic::getDate,
Collectors.summingInt(Topic::getPoints)));
Может быть, есть другой способ, вместо того, чтобы карта возвращала созданный dto для этогодело?например,
@Data
public class ResultDto {
private LocalDate date;
private String name;
private int points;
private User user;
}