加入Hibernate

时间:2015-12-10 09:53:06

标签: oracle hibernate join hql

我有两张有亲子关系的桌子。

  1. 包含列的对象( PARTYSEQ ,PARTYID ...)
  2. PartyContact with columns(PARTYCONTACTSEQ, PARTYSEQ ,CONTACTTYPECD ....)
  3. 场景:对于一方的记录,PartyContact中可能没有记录或最多3条记录。

    HQL 中的所需输出:如果partyContact中没有记录(可以使用加入完成),则 如果有多条记录存在于partyContact中,然后只显示其中一个。* \

    实施例 PARTY TABLE /数据对象

    • 1620 个人sdfdsf sdfdsf

    PARTYCONATCT TABLE /数据对象

    • 1332 1620 RESIDENTIAL
    • 1333 1620 OFFICE
    • 1334 1620 MOBILE

    问题是将党内联系中的这三个记录视为一个。

    我的查询:

    SELECT partyDO.firstName1,partyContactDO.contactTypeCd  FROM PartyDO partyDO left outer join partyDO.listPartyContactDOList partyContactDO 
    where partyDO.id=1620 
    

    提前致谢

1 个答案:

答案 0 :(得分:0)

您的问题出在实体结构上。

您可以通过两种方式获得结果:

第一个:

在Party实体中添加公式,如下所示:

<property name="partyContact" formula="
        (select pc.id from partycontact pc where pc.fk_party = id limit 1"
type="string"></property>

所以当你运行你的查询时:

SELECT P FROM Party P

你将获得派对和第一个PartyContact

第二个:

在Party实体中添加PartyContact的集合。

所以当你运行你的查询时:

SELECT P FROM Party P

您可以获得PartyContact集合的第一个元素。