powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
38 сообщений из 38, показаны все 2 страниц
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37711883
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Например, в слое DAO у меня есть метод, возвращающий список потомков некоторой сущности -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
    public List<Parent> getChilds(Integer id1) {
    	try {
	    	session = HibernateUtil.getSessionFactory().openSession();
	    	parent = (Parent)session.get(Parent.class, id1);
		} finally {
		      if(session != null && session.isOpen()) {
		        session.close();
		      }    
		}
        return parent.getChildList();
    }

...



В бизнес- слое я хочу обратиться к нему некоторым образом-

Код: java
1.
2.
3.
4.
...
List<Childs> l = dao.getChilds(identifier);
...
.....l.size().............



Однако на l.size() выбрасывается исключение такого характера -

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ....., no session or session was closed

С чем это может быть связано? Был бы весьма признателен за информацию.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37711886
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ленивые зависимости вытаскиваются из текущей сессии. У вас сессия закрыта. Вы вообще про ленивую загрузку не читали?
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37711899
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Blazkowicz!

Ясно, благодарю. К сожалению, иногда приходится learning by doing. Согласен, вопрос нужно проработать тщательным образом.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37711906
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
держи ньансы сабжа:
http://habrahabr.ru/post/111911/
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37711914
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, спасибо!
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712505
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, депроксирование посредством initializeAndUnproxy эффекта не возымело, возможно, в силу не верного применения - я передал в описанный метод экземпляр класса Parent, полученный из текущей сессии и далее попытался из него вернуть список, однако исключение осталось тем же.

Возможно, этот фильтр, насколько я понимаю, должен решить проблему -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
...
public class HibernateSessionRequestFilter implements Filter {
    private static final Logger logger = Logger.getLogger(HibernateSessionRequestFilter.class);
    private SessionFactory sf;

    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
            throws IOException, ServletException {
        try {
            sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);
            sf.getCurrentSession().getTransaction().commit();
        } catch (StaleObjectStateException staleEx) {
        	logger.error(staleEx.getMessage(), staleEx);
            throw staleEx;
        } catch (Throwable ex) {
        	logger.error(ex.getMessage(), ex);
            try {
                if (sf.getCurrentSession().getTransaction().isActive()) {
                    sf.getCurrentSession().getTransaction().rollback();
                }
            } catch (Throwable rbEx) {
            	logger.error(rbEx.getMessage(), rbEx);
            }
            throw new ServletException(ex);
        }
    }
    public void init(FilterConfig filterConfig) throws ServletException {
        sf = HibernateUtil.getSessionFactory()
    }
    public void destroy() {    	
    }
}
...



++ маппинг в web.xml

Т.е. в DAO- слое будет вызов .....getCurrentSession(); без последующего закрытия.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712520
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Open Session In View это тоже антипаттерн от безысходности. Его можно использовать для тестовых целей, но по-хорошему данные уже должны быть сформированы в контролере, когда он их получает от сервиса. А так у вас View слой ходит в базу когда ему вздумается.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczOpen Session In View это тоже антипаттерн от безысходности. Его можно использовать для тестовых целей, но по-хорошему данные уже должны быть сформированы в контролере, когда он их получает от сервиса. А так у вас View слой ходит в базу когда ему вздумается.
дело же не в контроллёре.
Всё бОльше ГУИ хотят ходить в БД когда им вздумается (ZK на каждый MoiseEvent - лезет на сервер).
Из-за этого у них проблемы с хибером (ZK).
Т.е. MVC не работает при AJAX.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712532
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidбез последующего закрытия
отпишись о рез-те.
Мне интересны длинные транзакции по 8 часов.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712534
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Т.е. MVC не работает при AJAX.
У меня работает. Что я делаю не так?
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712535
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123Т.е. MVC не работает при AJAX.
У меня работает. Что я делаю не так?
я вашего ГУИ не видел.
Работа-работе рознь.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712536
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА так у вас View слой ходит в базу когда ему вздумается.

Согласен.

Petro123, хорошо, мне самому интересно.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712812
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Сессию хибера лучше открывать в начале реквеста и закрывать в конце. А не дробить транзакции так мелко.

ivanov-voidТ.е. в DAO- слое будет вызов .....getCurrentSession(); без последующего закрытия.

Однако в Open Session in View ничего об этом не говорится, по- крайней мере, фильтр не содержит релевантного кода закрытия/ открытия сессии.

Код: java
1.
2.
3.
4.
5.
6.
...
            sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);
            sf.getCurrentSession().getTransaction().commit();

...



Но понятно, что если не закрывать, то транзакции будут именно такими, как вы указали. Однако если закрывать, то проблема, описанная в начале поста остается.

Могу- ли я добавить в фильтр код, открывающий сессию перед передачей по цепочке фильтров и затем закрывающий после коммита?
Соответственно, убрать его из DAO- слоя.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712834
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidOpen Session in View
у меня всё нет времени проверить, вот код на который весь инет ведёт. Посмотри его, только отпишись потом
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=916663&msg=12063401
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37712988
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел, внес соответствующие изменения в фильтр; проблема разрешилась, однако появилась другая -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
HibernateUtil.getCurrentSession().beginTransaction();
chain.doFilter(request, response);
HibernateUtil.getCurrentSession().getTransaction().commit();
...
        finally {
	    	  HibernateUtil.closeSession();
        }
...



, где:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
    public static void closeSession() throws HibernateException {
        try {
            Session s = (Session) threadSession.get();
            threadSession.set(null);
            if (s != null && s.isOpen()) {
                s.close();
            }
        } catch (HibernateException ex) {
            throw new HibernateException(ex);
        }
    }

...



...и -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
    public static Session getCurrentSession() throws HibernateException {
        Session s = (Session) threadSession.get();
        try {
            if(s == null) {
            	s = getMarksistSessionFactory().openSession();
            }
            threadSession.set(s);
        } catch (HibernateException ex) {
            throw new HibernateException(ex);
        }
        return s;
    }

...



Далее я добавляю родительскую сущность -
...
// presentation layer
if(dao.save(gbCapacityEntity)) ....
...
// dao layer
session = HibernateUtil.getCurrentSession();
session.save(gbCapacity);
session.flush();
...

Все Ок. Потом привязываю к ней потомков и обновляю -
...
if(gbCapacityDAO.update(gbCapacity)...
...

Исключение:

Cause: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.intellex.marksist.hbn.model.GbCapacity#307456]
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713028
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшая ремарка - там
Код: java
1.
// business layer

имелся в виду.

Странное исключение, если принять во- внимание тот факт, что сессия закрыта к тому моменту и открыта снова.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713042
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-то у вас стандартные грабли. Хибер получил 2 экземпляра одного и того же класса с одним и тем же PK. Он озадачен тем какой же из двух инстансов ему использовать. Откуда у вас в системе два экземпляра - покажет дебаг.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713060
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, ясно, благодарю.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713543
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
...
HibernateUtil.getCurrentSession().beginTransaction();
chain.doFilter(request, response);
HibernateUtil.getCurrentSession().getTransaction().commit();
...
HibernateUtil.closeSession();
...



Скажем, некоторый функционал предполагает сохранение определенной сущности по запросу -

Код: java
1.
2.
3.
...
dao.save(e)
...



Сам метод save:

Код: java
1.
2.
3.
4.
5.
6.
...
	public void save(E e) {
        session = HibernateUtil.getCurrentSession();
        session.save(e);
        }
...



После этого сессия закрыта через фильтр.

Далее на один запрос имеет место несколько последовательных обращений к слою персистенции -

Код: java
1.
2.
3.
4.
5.
6.
7.
...
e = dao.getEntity(id);
e.getChilds.add(child);
...     
dao.update(e) 
dao.save(child)
...



Реализации методов dao похожи, т.е. закрыть сессию в них нельзя, иначе коммит из фильтра потом не пройдет. Вопрос, т.о., сводится к тому, чтобы в рамках текущей сессии проделать приведенную выше последовательность действий.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713572
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что вы мучаетесь. Возьмите Spring с декларативным управлением транзакциями.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713580
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidРеализации методов dao похожи, т.е. закрыть сессию в них нельзя, иначе коммит из фильтра потом не пройдет. Вопрос, т.о., сводится к тому, чтобы в рамках текущей сессии проделать приведенную выше последовательность действий.
я не понял твоей проблемы:
1. кто мешает сделать эту посл-ть?
2. следить за _лишним_ BeginTransaction нужно везде, не только в ОРМ, но и в БД.
3. этот код на самом деле не запрос на view, а запрос на реквест.
Причём "на реквест" он становится не таким особенным, т.к. ты просто вынес строку "ВсёКоммит" из сервлета на уровень выше, в фильтр (ООП).
Т.е. - делай! Кто мешает?
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713584
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто вы мучаетесь. Возьмите Spring с декларативным управлением транзакциями.
он уже сделал.
У него нет в сервлете транзакций.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713589
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если разговор всё ещё про NonUniqueObjectException, то как-то всё равно не понятно откуда второй экземпляр.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713715
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто вы мучаетесь. Возьмите Spring с декларативным управлением транзакциями.

Это Vaadin; есть некоторые преодолимые сложности в вопросах интеграции со Spring, пока этим не занимался, хотя как свести их, знаю.

BlazkowiczЕсли разговор всё ещё про NonUniqueObjectException, то как-то всё равно не понятно откуда второй экземпляр.

Мне тоже.

Petro123 У него нет в сервлете транзакций.

Спасибо за пример аналогии!

Мешает все тот же NonUniqueObjectException. Может, hashcode() и equals() добавить в сущности? Странно, что не помогает .....flush()...

Есть- ли способы разорвать эту "already associated with the session"?
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713734
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, вылетает на dao.update(e) - заменяю на merge(e) - спотыкаюсь о dao.save(child) .
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713738
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-void,
ivanov-voidЕсть- ли способы разорвать эту "already associated with the session"?
Код: java
1.
2.
3.
4.
5.
6.
Book b = new Book();
b.setName("ВойнаИмир");
Autor a = new Autor();
a.setName("Иванов");
b.addAutor(a);
session.saveOrUpdate(b);
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37713972
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел, окуда второй в сессии - ниже поясню.

Petro123, допустим.

Но что, если (да простит меня Лев Николаевич) -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "WAR_N_PEACE")
public class Book {
	@Id	
	@Column(name = "ID")
	private Integer id;

	@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="book")
	private List<Authors> authors = new ArrayList<Authors>();
...
}



И соответственно -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Entity
@Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.NONE)
@Table(name = "Authors")
public class Authors {
	@Id
	@Column(name = "ID")
	private Integer id;

	@ManyToOne
	private Book book;
...	
}



Добавим книгу -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Book book = new Book();
...
dao.save(book);

Потом где- то сформируем список авторов -
...
Book book = dao.getBook(id);
Author author = new  Author();
...
book.getAuthors().add(author); //<<<< список на каждое обращение создается заново
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37714032
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее, не так - при session.saveOrUpdate(b); обновится родитель, но потомки не сохранятся. Минутку..
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37714429
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в этом, там вполне закономерно появляется org.hibernate.exception.ConstraintViolationException, следовательно, в списке всегда одна запись.

Поэтому я упоминал о составных ключах.

Хорошо, допустим я добавлю дополнительные поля в обе таблицы, не потеряю- ли я при этом имеющийся функционал, скажем поиска по Id, если его значение станет мне неизвестным? Так я могу передать его из свойста Item той строки, которую выбрал, однако при этом без составного ключа более одной записи в подчиненной сущности заиметь не удастся.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37714432
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, хотя ничто не мешает взять его через геттер. Вобщем, придется снова перегенерировать схему.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37714585
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывайте и закрывайте сессию в сервлет-фильтре. Сам Гевин официально одобряет такой способ, см Hibernate in Action.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37714680
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Йуный джавистЪ!

Согласен.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37715116
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪОткрывайте и закрывайте сессию в сервлет-фильтре. Сам Гевин официально одобряет такой способ, см Hibernate in Action.
Видать задолбали его вопросами "что делать" и "как быть".
https://www.google.com/search?q=Open+session+in+view+antipattern
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37715156
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
обычное дело.
Стандарты и спецификации загоняют в узкие (замечательные) рамки. А жизнь, она не по спецификациям.
Это как Модель загонять в 3 типа отношений
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37716323
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.google.com/search?q=Open+session+in+view+antipattern

А в чем проблема такого подхода?
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37716334
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪА в чем проблема такого подхода?
Первые 3-4 ссылки прочитайте. Там подробно описано. Не вижу смысла копипастить сюда.
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37716399
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ https://www.google.com/search?q=Open+session+in+view+antipattern

А в чем проблема такого подхода?
в этом
https://www.google.com/search?q=Open+session+in+view+pattern
:)
...
Рейтинг: 0 / 0
Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
    #37942916
j-unior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
у меня не получается настроить OSIV фильтер. Несмотря на то, что он есть я получаю сессии с разными хэш кодами от фабрики сессий. Вот мой код для примера

web.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        WEB-INF/applicationContext.xml
    </param-value>
</context-param>


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<filter>
    <filter-name>Hibernate-OSIV pattern</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
    </init-param>
    <init-param>
        <param-name>singleSession</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>flushMode</param-name>
        <param-value>AUTO</param-value>
    </init-param>

</filter>
<filter-mapping>
    <filter-name>Hibernate-OSIV pattern</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>



Мой ДАО просто напросто получает SessionFactory из Spring контекста и с ними производит все операции. Т.е

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public class BasicDaoImpl implements BasicDao {

private Class currentClass;

private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
    return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

@Transactional(readOnly = true)
@Override
public T getById(long id) {
    Session session = getCurrentSession();
    return (T) session.get(getGenericClass(), id);
}

@Transactional(readOnly = true)
@Override
public List<T> getAll() {
    Session session = getCurrentSession();
    return session.createCriteria(getGenericClass()).list();
}
...
protected Session getCurrentSession() {
    return sessionFactory.getCurrentSession();
}



а SessionFactory определяется очень просто:

Код: xml
1.
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"autowire="no">



контекст в сервлете я получаю так:

Код: java
1.
applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletConfig.getServletContext());



Не могу понять где собака зарыта. Буду признателен за любые идеи.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: LazyInitializationException: failed to lazily initialize a collection of role
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]