2012-05-07 3 views
0

ранее, вот как я сопоставляю свою таблицу «Активность». В этой таблице хранятся идентификаторы CONTACT_ID и ACCOUNT_ID, которые ссылаются на таблицу Account and Contact. enter image description hereHibernate mapping - отношение много к одному

таким образом

<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" 
/> 

Теперь у меня есть таблица, как показано ниже enter image description here

эта таблица не хранит ACCOUNT_ID и CONTACT_ID, но она разделена на "Table_REF" и «REF_ID ». Например, TABLE_REF = «Учетная запись» и REF_ID = 239 совпадает с идентификатором Account_ID = 239 в таблице «Учетная запись».

Может ли кто-нибудь сказать мне, как мне сопоставить эту таблицу, чтобы я мог различать их и использовать в DAO для поиска?

Пожалуйста, помогите мне. Заранее спасибо.

ответ

0

Вы можете попробовать следующее изображение: Это будет заполнять его в зависимости от того, существует ли идентификатор в соответствующих таблицах. Вы можете использовать следующий запрос для правильной загрузки данных.

"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> 
+0

Я новичок в спящем режиме, я не могу видеть, где можно применить запрос в моем hbm.xml, можете ли вы рассказать мне более подробную информацию? Большое спасибо. – user998405

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> 

См reference documentation.

+0

Большое спасибо, могу ли я знать, как я могу применить referenceObj create на в DAO? Я хочу выполнить поиск, который будет фильтровать таблицу Account. Обычно я могу сделать это в DAO - «criteria.createAlias ​​(CostCentre.PROP_CONTACT_OBJ, CostCentre.PROP_CONTACT_OBJ, Criteria.LEFT_JOIN); – user998405

Смежные вопросы