1

我正在尝试使用以下 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”这个词。然后我的返回列表是空的。

应用程序就像涂鸦,数据库看起来像这样:

调查有一个列表调查日期调查
日期有一个响应列表
响应有一个属性用户

我的任务是:该方法有一个参数surveyId 并返回所有响应它的用户。所以我们要一直往下走Survey-->surveyDates-->responses-->user

我想这对你来说很容易,我是 SQL 的新手,甚至是 Hibernate 的新手!

4

1 回答 1

0

您的查询似乎不正确:如果您期望用户列表,您应该从用户开始您的子句(但由于您没有提供任何映射,我只是希望您在用户和响应之间建立反比关系等等)

像这样的东西应该会更好:

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
于 2012-11-08T20:59:47.227 回答