0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 49
|
|
1 | |
Проблема с использованием HibernateTemplate (Spring)12.07.2011, 11:40. Показов 1820. Ответов 2
Метки нет (Все метки)
Возникает, когда использую HibernateTemplate:
Iterator iteratorRubrics = getHibernateTemplate().iterate(query); Когда делаю так : Iterator iteratorEditions = getSession().iterate(query); Все ok. printed Stack Trace: net.sf.hibernate.LazyInitializationException: Hibernate lazy instantiation problem at net.sf.hibernate.impl.IteratorImpl.next(IteratorImpl.java:133) at hiberdata.LinkcheckerImp1.createComboboxFormatsByWhereExpression(LinkcheckerImp1 .java:299) at test.hiberdata.LinkcheckerTest.testIsHibernateTeamplateBugOnFormats(LinkcheckerT est.java:116) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner .java:436) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java :311) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.jav a:192) Caused by: java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:3599) at com.mysql.jdbc.ResultSet.next(ResultSet.java:2464) at net.sf.hibernate.impl.IteratorImpl.postNext(IteratorImpl.java:85) at net.sf.hibernate.impl.IteratorImpl.next(IteratorImpl.java:127) ... 17 more
0
|
12.07.2011, 11:40 | |
Ответы с готовыми решениями:
2
Сайт с использованием Spring Проблема со Spring Security Проблема с подключением Spring к бд на сервере Проблема с Spring+Retrofit (Android) |
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
12.07.2011, 17:24 | 2 |
В Hibernate не силён, но по моему идет вичитка объектов которые определены как lazy а сессия уже закрыта..
0
|
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 49
|
|
13.07.2011, 09:42 [ТС] | 3 |
Да, наверное действительно так...
Когда говорим HibernateTemplate.iterate(query); Открывается сессия. Берется итератор. Сессия закрывается. А дальше мы хотим побегать по резалтсету при закрытой сессии. А грабли в том, что .iterate(query) должен юзаться внутри транзакции(Например с помощью HibernateTransactionManager) тогда будет все хорошо. По крайней мере так я для себя перевел кусок из spring api: public class HibernateTemplate extends HibernateAccessor implements HibernateOperations Note that operations that return an Iterator (i.e. iterate) are supposed to be used within Spring-driven or JTA-driven transactions (with HibernateTransactionManager, JtaTransactionManager, or EJB CMT). Else, the Iterator won't be able to read results from its ResultSet anymore, as the underlying Hibernate Session will already have been closed. Lazy loading will also just work with an open Hibernate Session, either within a transaction or within OpenSessionInViewFilter/Interceptor. Furthermore, some operations just make sense within transactions, for example: contains, evict, lock, flush, clear.
0
|
13.07.2011, 09:42 | |
13.07.2011, 09:42 | |
Помогаю со студенческими работами здесь
3
Как сохранить json в mongodb с использованием spring Плагин для браузера на Java с использованием Spring Получить класс сущности с использованием аннотации (spring jdbc) Проблема с валидацией формы update в Thymeleaf и Spring Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |