Как вернуть Map <String, Object> в Java, JPA?

У меня есть два объекта, Student и Book . Student имеет отношения @OneToMany с Book , а у Book есть только id , name и год publishYear . Что я хочу, чтобы вернуться из Query это:

select s.name, 
       b.name, 
       b.publishYear 
from Student s 
     inner join Book b on s.id = b.studentId

Как вернуть s.name , b.name и b.publishYear с картой, поэтому я не хочу возвращать список, а карту. Как это сделать?

Всего 1 ответ


Я предполагаю, что у вас есть метод findAll() который возвращает список объектов с StudentBook которые имеют свойства имя ученика, название книги и год публикации книги.

Теперь нужно преобразовать этот метод, чтобы он возвращал карту, в которой ключом является название книги, а в качестве значений - название книги и год издания книги, следуя приведенному ниже коду:

        Map<String, Book> map = studentBookList.stream()
         .collect(Collectors.toMap(
                        StudentBook::getSname(), 
                        new Book(StudentBook::getBname(),
                                StudentBook::getPublishYear()
                                )
                        )
                );

Есть идеи?

10000