Добрый день. Не знал точно, где тему создавать - если не прав переместите, пожалуйста.
есть hibernate-маппинг:
Код | <class discriminator-value="Entity" name="Domain.Super.Entity" polymorphism="implicit" table="ENTITY"> <id name="id" type="string"> <column name="ID"/> <generator class="uuid"/> </id> <!-- more --> <subclass discriminator-value="Human" extends="Domain.Super.Entity" name="Domain.Human"> <set name="contacts"> <key column="CONTACTOR_ID"/> <one-to-many class="Domain.Contact" not-found="ignore"/> </set> <join table="HUMAN"> <key column="ID"/> <!-- more --> </join> </subclass> <subclass discriminator-value="Contact" extends="Domain.Super.Entity" name="Domain.Contact"> <join table="CONTACT"> <key column="ID"/> <many-to-one access="field" class="Domain.Human" name="contactor"> <column name="CONTACTOR_ID"/> </many-to-one> <!-- more --> </join> </subclass> </class>
|
Но, при попытке получить Domain.Human субселект для контактов получается вот такой:
Код | /* load one-to-many Domain.Human.contacts */ select contacts0_.ID as ID3_, contacts0_.ID as ID1_2_, contacts0_.TS as TS1_2_, contacts0_.DOMAIN_CLASS_ID as DOMAIN3_1_2_, contacts0_.USER_ID as USER5_1_2_, contacts0_.DEPARTMENT_ID as DEPARTMENT6_1_2_, contacts0_.IS_ACTIVE as IS7_1_2_, contacts0_.IS_SYSTEM as IS8_1_2_, contacts0_.MAIL_CLASS_ID as MAIL2_1_2_, contacts0_1_.CONTACT_KIND_ID as CONTACT2_9_2_, contacts0_1_.VALUE as VALUE9_2_, contacts0_1_.CONTACTOR_ID as CONTACTOR4_9_2_ from ENTITY contacts0_ inner join CONTACT contacts0_1_ on contacts0_.ID = contacts0_1_.ID where contacts0_.CONTACTOR_ID = ?
|
Т.е. hibernate строит запрос неправильно - CONTACTOR_ID находится не в ENTITY, а в субклассе - CONTACT. Как указать хибернэйту, к какой таблице строить соединение? |