Re: RequestFactory Eagerly Fetches the collections in my entity meant to loaded Lazy
Thanks Thomas, You always been a great help... :) On Saturday, 16 February 2013 03:47:37 UTC+5:30, Thomas Broyer wrote: Because a ValueProxy has no identity (and therefore cannot be retrieved again later), .with() doesn't apply to it; it only applies to EntityProxy. On Friday, February 15, 2013 11:07:10 PM UTC+1, Aryan wrote: Hi all, RequestFactory seems to fetch whatever the collection I have in my ValueProxy eagarly. Lets see the code @Entity public class Venue implements Serializable { private name; private Address address; private SetVenueContact contacts; @OneToMany(fetch = FetchType.LAZY) public SetVenueContact getVenueContactses() { return this.contacts; } // other getters and setters } Lets assume I have set everything else for RequestFactory and Hibernate (Hibernate standalone tests run fine) in order. I call the below code from client: requestFactory.venueRequest.findById(7).fire(new RecieverVenueProxy() { public void onSuccess(VenueProxy res) { log.info(I never get this :(); } }); In service method public Venue findById() { //currently I am using a command pattern for a unit of transaction but anyway I just write simply whats happening // assume try catch and variable declaration code session = HibernateUtil.getSessionFactory.openSession(); trx = session.getTrasaction(); trx.beginTransaction(); venue = veneuDao.findById(7); trx.commit(); session.close(); } ## Run Application and get this exception org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.x..dto.Venue.contacts, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:617) at com.google.web.bindery.requestfactory.server.Resolver.access$400(Resolver.java:50) at com.google.web.bindery.requestfactory.server.Resolver$PropertyResolver.visitReferenceProperty(Resolver.java:139) at com.google.web.bindery.autobean.shared.AutoBeanVisitor.visitCollectionProperty(AutoBeanVisitor.java:229) at com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:300) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:395) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:483) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:225) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127) at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at com.x.x.x.PersistenceFilter.doFilter(PersistenceFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at
RequestFactory Eagerly Fetches the collections in my entity meant to loaded Lazy
Hi all, RequestFactory seems to fetch whatever the collection I have in my ValueProxy eagarly. Lets see the code @Entity public class Venue implements Serializable { private name; private Address address; private SetVenueContact contacts; @OneToMany(fetch = FetchType.LAZY) public SetVenueContact getVenueContactses() { return this.contacts; } // other getters and setters } Lets assume I have set everything else for RequestFactory and Hibernate (Hibernate standalone tests run fine) in order. I call the below code from client: requestFactory.venueRequest.findById(7).fire(new RecieverVenueProxy() { public void onSuccess(VenueProxy res) { log.info(I never get this :(); } }); In service method public Venue findById() { //currently I am using a command pattern for a unit of transaction but anyway I just write simply whats happening // assume try catch and variable declaration code session = HibernateUtil.getSessionFactory.openSession(); trx = session.getTrasaction(); trx.beginTransaction(); venue = veneuDao.findById(7); trx.commit(); session.close(); } ## Run Application and get this exception org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.x..dto.Venue.contacts, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:617) at com.google.web.bindery.requestfactory.server.Resolver.access$400(Resolver.java:50) at com.google.web.bindery.requestfactory.server.Resolver$PropertyResolver.visitReferenceProperty(Resolver.java:139) at com.google.web.bindery.autobean.shared.AutoBeanVisitor.visitCollectionProperty(AutoBeanVisitor.java:229) at com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:300) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:395) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:483) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:225) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127) at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at com.x.x.x.PersistenceFilter.doFilter(PersistenceFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
Re: RequestFactory Eagerly Fetches the collections in my entity meant to loaded Lazy
Because a ValueProxy has no identity (and therefore cannot be retrieved again later), .with() doesn't apply to it; it only applies to EntityProxy. On Friday, February 15, 2013 11:07:10 PM UTC+1, Aryan wrote: Hi all, RequestFactory seems to fetch whatever the collection I have in my ValueProxy eagarly. Lets see the code @Entity public class Venue implements Serializable { private name; private Address address; private SetVenueContact contacts; @OneToMany(fetch = FetchType.LAZY) public SetVenueContact getVenueContactses() { return this.contacts; } // other getters and setters } Lets assume I have set everything else for RequestFactory and Hibernate (Hibernate standalone tests run fine) in order. I call the below code from client: requestFactory.venueRequest.findById(7).fire(new RecieverVenueProxy() { public void onSuccess(VenueProxy res) { log.info(I never get this :(); } }); In service method public Venue findById() { //currently I am using a command pattern for a unit of transaction but anyway I just write simply whats happening // assume try catch and variable declaration code session = HibernateUtil.getSessionFactory.openSession(); trx = session.getTrasaction(); trx.beginTransaction(); venue = veneuDao.findById(7); trx.commit(); session.close(); } ## Run Application and get this exception org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.x..dto.Venue.contacts, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:617) at com.google.web.bindery.requestfactory.server.Resolver.access$400(Resolver.java:50) at com.google.web.bindery.requestfactory.server.Resolver$PropertyResolver.visitReferenceProperty(Resolver.java:139) at com.google.web.bindery.autobean.shared.AutoBeanVisitor.visitCollectionProperty(AutoBeanVisitor.java:229) at com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:300) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) at com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:395) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:483) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:225) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127) at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at com.x.x.x.PersistenceFilter.doFilter(PersistenceFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at