,我发现了以下情况例外,当我尝试运行我的HQL查询:ExecutionException当通过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
字符串传递给构造函数。
我不确定是什么原因导致了我得到的异常。你们看到什么了吗?
在DB中保存DTO? – yair 2012-01-16 22:30:22
@yair不,这是一个查询从数据库中恢复数据。 DTO是数据的容器。 – Graham 2012-01-16 22:34:41
哦,我现在看到它:)。 – yair 2012-01-17 08:37:03