Вобщем есть маппинг:
| Код | <class name="org.db.Queue" table="QUEUE"> <composite-id name="id" class="org.db.AgreementId"> <key-property name="contragentId" type="java.lang.Long"> <column name="CONTRAGENT_ID"/> </key-property> <key-property name="taxCode" type="string"> <column name="CUSTOMER_TAX_CODE" length="10"/> </key-property> <key-property name="agreementNo" type="string"> <column name="AGREEMENT_NO" length="32"/> </key-property> </composite-id>
<property name="contragentShortName" type="string"> <column name="CONTRAGENT_SHORT_NAME" not-null="true"/> </property>
</class>
|
и
| Код | <class name="org.db.CustomerPhone" table="CUSTOMER_PHONE" > <id name="id" type="java.lang.Long"> <column name="ID" precision="22" scale="0"/> <generator class="sequence"> <param name="sequence">SEQ_CUSTOMER_PHONE</param> </generator> </id>
<property name="taxCode" type="java.lang.String"> <column name="TAX_CODE" length="10" not-null="true"/> </property>
<property name="phone" type="string"> <column name="PHONE" length="128" not-null="true"/> </property> </class>
|
как видно из маппинга две таблици между собой никак не связаны. Вопрос в том как в Queue добавить коллекцию CustomerPhone, связанную по TAX_CODE. Тоисть сделать чтото подобное:
| Код | <set name="phones"> <key column="tax_code"/> <one-to-many class="org.db.CustomerPhone"/> </set>
|
проблема в том что хибернет пытается сравнить tax_code из таблици CUSTOMER_PHONE и первичный ключ который композит ид... как задать маппинг что бы hibernate соиденял только по tax_code??? Проблема еще усложняется тем что у Queue композит ид |