![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
strangerv |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.6.2008 Репутация: нет Всего: нет |
Всем привет!
Есть в моем классе коллекция дочерних объектов, которые являются наследниками от некоторого базового класса. Так вот, при попытке сохранить эту коллекцию в базе hibernate неправильно генерит запрос на апдейт (пытается проапдейтить абстрактный базовый класс, а не конкретного наследника). Вот код:
Вот маппинги:
и
и тестовый код для сохранения:
hibernate генерит следующий sql:
Естественно, база данных выдает ошибку:
То-есть, hibernate пытается проапдейтить таблицу BaseEntry (которой нет, потому что класс BaseEntry — абстрактный базовый для полиформфной иерархии!!) вместо таблиц bay и cc! Почему так? Скажите, пожалуйста, как правильно настроить сохранение полиморфной коллекции? |
||||||||||||
|
|||||||||||||
Zыыыыы |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
В Хибернейте используется неявный полиморфизм. Чтобы исправить ситуацию, нужно прописать явно класс:
в
вместо BaseEntry написать имя класса-наследника (Bay). При этом в коде класса Device ничего мянять не нужно. Версия руководства старая...но зато на русском http://samsonov.bn.by/lib/hibernate/inheri...ance-strategies Можно использовать для последней версии, но там вроде ничего нового в этой главе нет http://docs.jboss.org/hibernate/stable/cor...nheritance.html |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |