Good day! I have some database and entities that I work with in a servlet.

here is a snippet of code from doGet, doPost . Immediately make a reservation that inside all my DAO objects look like this:

session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); launches = session.createCriteria(LaunchesEntity.class).list(); tx.commit(); session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); launches = session.createCriteria(LaunchesEntity.class).list(); tx.commit(); 

Well, now the code from doGet, doPost :

  HibernateUtil.getSessionFactory().openSession(); //достаем из базы ВСЕ тесты Iterable<TestsEntity> alltest = Factory.getInstance().getTestsDAO().getAllTests(); for (TestsEntity testsEntity : alltest) { Transaction tx2 = HibernateUtil.getSessionFactory().getCurrentSession() .beginTransaction(); Iterable<ResultEntity> results = testsEntity.getResultsByTestId(); for (ResultEntity result : results) { //получаем Запуск с данным результатом LaunchesEntity launch = result.getLaunchesByLaunchId(); //получим все Параметры Запуска Iterable<ParamsAndValuesEntity> allParamsAndValues = launch .getParamsAndValuesesByLaunchId(); String paramsInString = null; for (ParamsAndValuesEntity paramAndValue : allParamsAndValues) { paramsInString+= " [" + paramAndValue.getParamsByParamsId().getParamName() + "= " + paramAndValue.getParamValue() + "] "; } Map row= new HashMap(); row.put("test_name", testsEntity.getName()); ......... //row.put("request_text", launch.getRequestText()); aaData.add(row); } tx2.commit(); } HibernateUtil.getSessionFactory().getCurrentSession().close(); 

Database diagram, I can, if desired, send. But I will say at once, there are different connections: one-to-many, many-to-many.

When Tomkata is slow, I get exception:

  SEVERE: Servlet.service() for servlet [DataTableBackend] in context with path [/TestManager] threw exception org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: models.TestsEntity.resultsByTestId, could not initialize proxy - no Session at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566) at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186) at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545) at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124) at org.hibernate.collection.internal.PersistentBag.iterator(PersistentBag.java:266) at DataTableBackend.doGet(DataTableBackend.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

PS prompt people good how to solve a problem, can prompt the working decision on data retrieval from a DB. Say at once that the data, as you can see, I submit complex queries to related tables

    1 answer 1

    Try to do as described in solving a similar problem Hibernate could not initialize proxy - no Session

    • no, the situation is much more complicated here - voipp
    • I look at your code and frankly I feel quiet uzhos. Is this your production system or are you just training? If this is your test project, then in order to understand what's going on there you would put it on github or bitbucket so it will be better for understanding. - huffman
    • This is a test project) I am just learning how to work with hibernate, and with all of JAVA EE . It all worked! It was necessary to clean the code, and coordinate it with simple rules: the correct opening of the session, the commit transaction. - voipp