-1

我想在加载时查询子对象,

这是我正在使用的查询:

SELECT app FROM ApplicantPerson app left join app.gpaList gpa , DesignatedSchool ds
WHERE
    app.applicantPersonId.applPersonId = ds.applPersonId 
    AND app.appStatusCd = 'P'  and gpa.verifiedInd= 1
    AND ds.designateStatusCd = 'A' 
    AND ds.medInstId = ?  
    AND app.applicantPersonId.applYear = ?
    AND ds.applYear = ?

但是申请者有 24 条记录,而子 gpalist 有 2 条记录,其中一条已验证 = 1,第二条已验证 = 0

注意:ApplicantPerson 和 Gpa 之间存在一对多关系

但是上述查询的输出是 30 条记录,而 gpalist 得到了 2 条记录。

我需要在父子 gpalist 中输出 24 条记录,其中一条记录已验证 =1

4

1 回答 1

0

where 子句用于选择查询返回实体,但它不修改查询返回的内容。如果查询返回 的实例ApplicantPerson,并且您要求返回的人员的孩子,您将始终获得所有孩子,无论查询用于获取这些人。

您的查询执行 和 之间的笛卡尔积appds因此您获得的行数超出预期也就不足为奇了。使用 distinct 关键字获取不同的实例:

select distinct app from ...
于 2012-10-21T16:38:13.303 回答