Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > вопрос по Хибернейт мэппингу


Автор: oson 26.12.2006, 19:02
Господа!
Подскажите плиз.
В классе Company есть Set contactPersons.
В классе Person есть тоже Set contactPersons.
то есть из класса Company я могу сделать мэппинг

Код



<set name="contactPersons" inverse="true">
            <key column="COMPANY_ID"/>
            <one-to-many class="ContactPerson"/>
        </set>


и из класса Person

Код



<set name="contactPersons" inverse="true">
            <key column="PERSON_ID"/>
            <one-to-many class="ContactPerson"/>
        </set>


А из класса ContactPerson

Код


        <many-to-one name="company" column="COMPANY_ID"  not-null="true"/>
        <many-to-one name="person"  column="PERSON_ID"  not-null="true"/>



но дело в том, что PK для класса ContactPerson состоит из этих двух полей

Код


<composite-id name="contactPersonId" class="ContactPersonId">
            <key-property name="companyId" column="COMPANY_ID" type="integer"/>
            <key-property name="personId" column="PERSON_ID" type="integer"/>
</composite-id>



и Hibernate ругается

org.hibernate.MappingException: Repeated column in mapping for entity: ContactPerson column: COMPANY_ID (should be mapped with insert="false" update="false")


Что можно сделать - может обьявить суррогатный PK и объявить комбинацию полей companyId и personId уникальными? Можно такое делать в Хибернейте?

Автор: tux 26.12.2006, 22:14
Hibernate пишет, что 'should be mapped with insert="false" update="false"'. Попробуй так поступить - добавить такие атрибуты у тэгов many-to-one.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)