При попытке выполнить мой HQL-запрос я получаю следующее исключение:
java.util.concurrent.ExecutionException: javax.ejb.EJBException:
java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join
fetching, but the owner of the fetched association was not present in the select list
А вот запрос, который я выполняю:
SELECT new com.airit.propworks.dto.CompanyContactReportDTO(comp, compStatus.statusDesc)
FROM CoCompany as comp
LEFT JOIN FETCH comp.coCompanyCategoriesCompanyNumbers as compCat
LEFT JOIN FETCH comp.coContactCompanyNumbers as compCont
LEFT JOIN FETCH comp.coOperatingNamesCompanyNumbers
LEFT JOIN compCat.categoryFunctionCoCategoryList as compFcn
LEFT JOIN FETCH compCont.coContactDocumentssCompositeFK1 as contDoc
LEFT JOIN FETCH compCont.coContactJobssCompositeFK1 as contJob
LEFT JOIN FETCH compCont.coPhoneNumberssCompositeFK1
LEFT JOIN FETCH contDoc.documentTypeCoDocumentTypes as docTypes
LEFT JOIN FETCH contJob.contactFunctionCoContactFunctions as contFcn
LEFT JOIN comp.companyStatusCoCompanyStatuses as compStatus --this was added by me
WHERE comp.companyNumber = ? ORDER BY comp.companyName
Строка, вторая за последней, была добавлена мной, а конструктор - мной. Только когда я добавил эти строки, я начал получать исключение.
Как вы можете видеть, вторая-последняя строка, ссылающаяся на comp.companyStatusCoCompanyStatuses
, является соединением, которое возвращает единственный объект CoCompanyStatuses
, который я затем пытаюсь получить из строки statusDesc
и передать конструктору.
Я не уверен, что вызывает исключение, которое я получаю. Ребята, вы что-нибудь видите?