0

我有以下实体:

  • 民意调查
  • 回复
  • 回应问题
  • 问题

调查与响应具有一对一的关联。Response 与 ResponseQuestion 具有一对多关联,后者与 Response 具有多对一关联,与 Question 具有多对一关联

我正在使用以下查询:

select r from Response r join fetch r.responseQuestion rq join fetch rq.question where r.survey.id = :survey_id

获取与调查相对应的响应。我期望外层有一个响应实体,它有一个包含 5 个 ResponseQuestion 实体的列表。但是,我得到的是一个包含 5 个 Response 对象的列表,每个对象都有 5 个 ResponseQuestion 对象。

我不确定为什么我在外面有 5 个对象,所有这些都指向内存中的同一个对象。响应表中只有 1 行。ResponseQuestion 表中的 5 行(全部映射到一个 Response)

谁能解释我做错了什么?

4

1 回答 1

1

使用 distinct,它应该可以解决您的问题。

select distinct r from Response r join fetch r.responseQuestion rq join fetch rq.question where r.survey.id = :survey_id

于 2013-06-22T10:23:31.310 回答