Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Hibernate мапинг |
Автор: m1ha 2.2.2008, 21:10 | ||||||||
Имеются 3 таблицы. CAR, CAR_ID, CAR_USER Таблица CAR содержит поля ID и CAR_ID и выполняет роль журналирования, то есть одна машина может быть записана несколько раз Пример CAR
Таблица CAR_ID содержит уникальные ID машины Пример CAR_ID
Таблица CAR_USER содердит в себе унакальный ID машины, и ID пользователя пример CAR_USER
Описываю класс Car У одной машины может быть много пользователей следовательно связь OneToMany
Ну и кодгда пытаюсь загрузить пользователей машины получаю org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: car.model.carUser, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86) at org.hibernate.collection.PersistentBag.toString(PersistentBag.java:483) at java.lang.String.valueOf(String.java:2615) at java.io.PrintStream.print(PrintStream.java:616) at java.io.PrintStream.println(PrintStream.java:753) Думаю, что ошибка в мапинге. Но как сделать его правильно пока не знаю. |
Автор: Ornitos 2.2.2008, 22:00 |
Ошибка скорее всего не в мэпинге. Покажи как ты загружаешь пользователей. Ещё можешь вот это посмотреть: http://kibungo.livejournal.com/21920.html?mode=reply |
Автор: m1ha 2.2.2008, 22:26 |
ну так все остальные обьекты класса Car (которые так же беруться из базы) получить можно, а exception возникает только когда обращаешься к carUser я всё таки думаю, что проблема в мапинге. |
Автор: arthurkas 12.3.2008, 05:52 | ||||
FetchType.EAGER тоже что и lazy="false" |
Автор: teg 13.3.2008, 22:39 |
Ставить EAGER - плохой тон, также как и использование списка и инициализация в поле. Итого: * надо оставить LAZY, но про хайбер что-то таки прочитать * List заменить на Set * убрать код инициализации поля |