我正在尝试使用以下HQL语句返回一个对象列表:
return getHibernateTemplate().findByNamedParam("Select distinct response.user
from Survey survey
inner join fetch survey.surveyDates surveyDate
inner join fetch surveyDate.responses response
where survey.id = :surveyId)", "surveyId", surveyId);
以下错误让我很生气:
HTTP状态500 - 查询指定的连接提取,但提取的关联的所有者在选择列表中不存在
所以我在我的代码中没有使用“fetch”这个词尝试过。然后我的返回列表是空的。
应用程序就像涂鸦,数据库看起来像这样:
调查有一份清单调查日期
SurveyDate有一份回复清单
响应具有属性用户
我的任务是:该方法有一个参数surveyId,并返回响应它的所有用户。所以我们必须一路走下去调查 - > surveyDates - >回复 - >用户
我想这对你来说很容易,我是SQL的新手,甚至更新的Hibernate!
答案 0 :(得分:0)
您的查询似乎不正确:如果您期望用户列表,您应该使用user启动from子句(但由于您没有提供任何映射,我只是期望您在用户和响应之间建立了反向关系,等等)
这样的事情会更好:
from user u
inner join u.responses as response
inner join response.surveydates as surveydates
inner join surveydates.survey as survey
where survey.id = :surveyId