0

以前,这就是我映射“活动”表的方式。此表存储链接到 Account 和 Contact 表的 CONTACT_ID 和 ACCOUNT_ID。 在此处输入图像描述

这样

<many-to-one
    name="accountObj"
    class="my.com.miramax.crm.account.db.Account"
    not-null="false"
    not-found="ignore"
    insert="false"
    update="false"
    column="ACCOUNT_ID"
/>

现在我有一个如下表 在此处输入图像描述

此表不存储 ACCOUNT_ID 和 CONTACT_ID,但它分为“Table_REF”和“REF_ID”。例如,TABLE_REF = "Account" 和 REF_ID = 239 与 Account 表中的 Account_ID = 239 相同。

谁能告诉我如何映射此表,以便区分它们并在 DAO 中使用它进行搜索?

请帮我。提前致谢。

4

2 回答 2

0

您可以尝试以下映射 --- 这将根据相应表中是否存在 ID 来填充它。您可以使用以下查询正确加载数据。

"from Activity activity left outer join activity.account ac with tableref='Account' left outer join activity.contact con with tableref='Contact'"

------------

<many-to-one name="account" 
column="REF_ID"
insert="false"
update="false" 
lazy="no-proxy"
not-found="ignore"
>
</many-to-one>

<many-to-one name="contact" 
column="REF_ID"
insert="false"
update="false"
lazy="no-proxy"
not-found="ignore"
>
</many-to-one>
于 2012-05-07T07:37:16.330 回答
0

对我来说,这听起来像是一个典型的案例<any>

<any name="referenceObj" id-type="long" meta-type="string">
    <meta-value value="Account" class="my.com.miramax.crm.account.db.Account"/>
    <meta-value value="Contact" class="..."/>
    <column name="TABLE_REF"/>
    <column name="REF_ID"/>
</any>

请参阅参考文档

于 2012-05-07T07:59:30.207 回答