Hibernate映射-多对一关系

Hibernate映射-多对一关系,hibernate,hibernate-mapping,many-to-one,Hibernate,Hibernate Mapping,Many To One,以前,我是这样映射我的活动表的。此表存储链接到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="A

以前,我是这样映射我的活动表的。此表存储链接到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中使用它进行搜索


请帮帮我。提前感谢。

您可以尝试以下映射-- 这将根据相应表中是否存在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>

对我来说,这听起来像是一个典型的例子。

我刚开始使用hibernate,我看不到任何地方可以在我的hbm.xml中应用查询,你能告诉我更多细节吗?非常感谢。非常感谢,我可以知道如何在DAO中应用referenceObj create by吗?我想进行搜索,以筛选Account表。通常我可以在DAO中这样做-criteria.createAliasCostCentre.PROP_CONTACT_OBJ,CostCentre.PROP_CONTACT_OBJ,criteria.LEFT_JOIN;
<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>