![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| afe |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
Доброго времени суток, очень надеюсь на вашу помощь в разрешении проблемы, которая занимает мое внимание уже несколько дней.
Есть 2 таблицы regions и cities (отношение многие-к-одному), вот маппинги для них:
Классы Region и City:
Делаю следующие действия: добавляю несколько записей в таблицу regions, затем пытаюсь извлечь все записи из нее с использованием Criteria. Все отлично работает, если в конфиге хибернейта указан флажок создания структуры базы заново(<property name="hbm2ddl.auto">create</property>). Если же проделывать те же операции, но схему базы не создавать, то при попытке извлечения списка всех регионов вываливается эксепшн org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of domain.Region.cities. Есть глобальная разница в инициализации персистентных объектов, создании внутренних хибернейтовских структур при применении hbm2ddl.auto=create и без? Есть ли идеи как побороть эксепш? Буду очень признателен. Если нужно, для детализации проблемы, могу выложить весь стек-трэйс и код получения объектов... |
||||||||
|
|||||||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
А что указано вместо create?
Я указал update, и у меня вроде всё работает. -------------------- Никогда не говори никогда |
|||
|
||||
| afe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
C update то же самое..
Ребят, ну может есть еще идеи? Пример же тривиальный..и решение наверняка где-то на поверхности, может есть хоть предложения/идеи в какую сторону глянуть? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
| afe |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
Эксепшены:
Код с затаившимся багом
|
||||||
|
|||||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
В твоих экспепшнах эксепшна нет ни одного, приводи полный лог. Из того, что ты привел можно понять только то, что у тебя есть Hibernate.
|
|||
|
||||
| afe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
Нет больше ничего. Это полный лог. Венчается он эксепшеном, который был приведен выше...привожу еще раз: 12:42:34,829 ERROR main BasicPropertyAccessor:set:94 - IllegalArgumentException in class: com.si.hermes.domain.Region, setter method of property: cities 12:42:34,845 ERROR main BasicPropertyAccessor:set:98 - expected type: java.util.List, actual value: org.hibernate.collection.PersistentSet |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
| afe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
Ну это видно, что Hibernate ругается на несовпадение типов...это по логу видно...но вопрос был в том, что все хорошо работает, если схема создается заново, почему-то тогда нет проблемы в приведении Set к List...
И еще, не выбираются из базы именно коллекции регионов...один регион выбирается..но у него тоже есть набор городов..должно не работать ведь и в этом случае...а не выборочно так... |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Несколько поразмыслив могу вывести следуюшее. Зависимость такого поведения от проперти hbm2ddl.auto заключается только в том, что в этом случае Hibernate пересоздает таблицы. Естественно, они при этом оказываются пустыми. Вот это и есть ключевое слово - пустые. По запросу Hibernate не возвращает тебе ни одного объекта региона, и, как следствие, не строит ни одного сета с городами для регионов. Исключение вываливается как раз при построении списка городов, но поскольку списка нет, то и дело до этого не доходит. Поэтому исключение вываливается только тогда, когда hbm2ddl.auto=false, а в таблице регионов есть какие-то записи. В общем, правь маппинги.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |