Hibernate的关系

时间:2012-10-21 16:24:44

标签: hibernate

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

这是我正在使用的查询:

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

1 个答案:

答案 0 :(得分:0)

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

您的查询在appds之间执行笛卡尔积,因此您获得的行数超出预期并不奇怪。使用distinct关键字获取不同的实例:

select distinct app from ...