Hibernate: ThreadLocalSessionContext: сессия уже привязана к вызову bind () - PullRequest
0 голосов
/ 03 апреля 2009

Когда я пытаюсь использовать ThreadLocalSessionContext следующим образом:

Session hsession = HibernateUtils.getSession();
ThreadLocalSessionContext.bind(hsession);
// do stuff
hsession.close();

Я делаю это для каждого действия Struts. Есть ли что-то, что я делаю не так, заставляя меня получить следующую ошибку?

[ThreadLocalSessionContext] Already session bound on call to bind(); make sure you clean up your sessions!

Я проверил все мои файлы, в которых был ThreadLocalSessionContext.bind, и убедился, что эти сессии явно закрыты. Есть ли способ отслеживать, когда сеансы связаны с фабриками сеансов?

Спасибо !!

1 Ответ

0 голосов
/ 15 апреля 2009

Как оказалось, хотя документация указывает, что "Если close () вызывается в сеансе, управляемом этим классом, он автоматически не будет связан". Это на самом деле не автоматический!

Вы должны явно вызвать ThreadLocalSessionContext.unbind(sessionFactory), чтобы отменить привязку сеанса. В противном случае, даже если сеанс закрывается, он все равно остается привязанным к SessionFactory.

...