Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hibernate on-to-many внтри субкласса 
:(
    Опции темы
Dblma
Дата 24.11.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 6.11.2007
Где: Moscow

Репутация: нет
Всего: 1



Добрый день.
Не знал точно, где тему создавать - если не прав переместите, пожалуйста.

есть 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.
Как указать хибернэйту, к какой таблице строить соединение?

Это сообщение отредактировал(а) Dblma - 24.11.2010, 16:14
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.