Как вернуть карту в Java, JPA? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть два объекта, 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 Ответ

0 голосов
/ 23 марта 2020

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

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

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