我想在加载时查询子对象,
这是我正在使用的查询:
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
答案 0 :(得分:0)
where子句用于选择查询返回的实体,但它不会修改查询返回的。如果查询返回ApplicantPerson
的实例,并且您要求返回人员的子女,那么无论用于获取这些人的查询,您都将获得所有孩子。
您的查询在app
和ds
之间执行笛卡尔积,因此您获得的行数超出预期并不奇怪。使用distinct关键字获取不同的实例:
select distinct app from ...