Я внедряю сервер GraphQL с использованием Spring Boot, однако у меня возникают некоторые проблемы при написании распознавателей для моделей, которые имеют отношения «многие ко многим». Функция getBooks
в следующем классе распознавателя выдает следующую ошибку:
package com.example.DemoGraphQL.resolver;
import java.util.Set;
import java.util.stream.Collectors;
import com.coxautodev.graphql.tools.GraphQLResolver;
import com.example.DemoGraphQL.model.Author;
import com.example.DemoGraphQL.model.Book;
import com.example.DemoGraphQL.repository.AuthorRepository;
import com.example.DemoGraphQL.repository.BookRepository;
public class AuthorResolver implements GraphQLResolver<Book> {
private BookRepository bookRepository;
public AuthorResolver(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
public Iterable<Book> getBooks(Author author) {
Set<Long> ids = author.getBooks().stream().map(book -> book.getId()).collect(Collectors.toSet());
return bookRepository.findAll(ids);
}
}
Сообщение об ошибке:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.DemoGraphQL.model.Author.books, could not initialize proxy - no Session
Я могу реализовать аналогичный преобразователь, когда запрашиваю только один объект для данной модели. Любые предложения приветствуются.