#java #spring-data-jpa #querydsl
Вопрос:
Мне очень трудно понять, почему я сталкиваюсь с исключением QueryException query specified join fetching, but the owner of the fetched association was not present in the select list
В моем проекте мне нужно сделать следующее:
projectRequest.getName(); ...... a bunch of different projectRequest gets... projectRequest.getProject().getName() ...... a bunch of project gets.... projectRequest.getProject().getProjectStatus().getName();
и вот как выглядят эти сущности:
public class ProjectRequest { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ProjectId", referencedColumnName = "ProjectId", insertable = false, updatable = false) private Project project; } public class Project { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "StatusId", insertable = false, updatable = false) private ProjectStatus projectStatus; }
Поэтому мне нужно получить кучу запросов на проекты и связанных с ними проектов, а также получить доступ к статусу проекта. Это подводит меня к проблеме N 1. Я читаю, что решение состоит в том, чтобы объединить лениво извлеченные ресурсы, поэтому я так и сделал:
select projectRequest from com.api.integration.entities.ProjectRequest projectRequest left join fetch projectRequest.project as project left join fetch projectRequest.project.projectStatus as projectStatus
Но, добавив эту left join fetch projectRequest.project.projectStatus as projectStatus
часть, я столкнулся query specified join fetching, but the owner of the fetched association was not present in the select list
. Как мне решить эту проблему? Почему это происходит?
Вот мой запрос в api:
new JPAQuerylt;ProjectRequestgt;() .from(projectRequest) .leftJoin(projectRequest.project, project).fetchJoin() .leftJoin(projectRequest.project.projectStatus, projectStatus).fetchJoin();