Hibernate:渴望获取/帮助我度过我的冬眠噩梦

时间:2012-11-08 18:14:40

标签: hibernate hql fetch lazy-evaluation eager

我正在尝试使用以下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!

1 个答案:

答案 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