weird... I'd expect that the CheckboxMultipleChoice would force the
initialization of the list before the EntityManager is closed. Is the
exception thrown on the form submission?

On Fri, Oct 2, 2009 at 8:48 AM, Pedro Santos <[email protected]> wrote:
> use *OpenSessionInViewFilter* to avoid lazy initialization exceptions
>
> On Fri, Oct 2, 2009 at 8:42 AM, Albert Romanius <[email protected]>wrote:
>
>> The line that throws the exception is below:
>> CheckBoxMultipleChoice subMessagesCB = new CheckBoxMultipleChoice(
>>               "subMessages", new PropertyModel(this,
>> "selectedSubs"), showMessage.getLazyList());
>>
>> The problem is the showMessage.getLazyList() call. When wicket renders
>> this combobox, spring filter have already closed the EntityManager.
>> If I uncomment this line (ugly hack):
>>  //showMessage.getLazyList().size();
>> Everything works.
>>
>> I am using tomcat 6.0.18 (bundled with Netbeans).
>>
>>
>> The stacktrace:
>>
>> ERROR - azyInitializationException - failed to lazily initialize a
>> collection of role: com.mycompany.persistence.domain.Message.lazyList,
>> no session or session was closed
>> org.hibernate.LazyInitializationException: failed to lazily initialize
>> a collection of role:
>> com.mycompany.persistence.domain.Message.lazyList, no session or
>> session was closed
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
>>        at
>> org.hibernate.collection.PersistentBag.size(PersistentBag.java:225)
>>        at
>> org.apache.wicket.markup.html.form.ListMultipleChoice.onComponentTag(ListMultipleChoice.java:246)
>>        at
>> org.apache.wicket.markup.html.form.CheckBoxMultipleChoice.onComponentTag(CheckBoxMultipleChoice.java:359)
>>        at org.apache.wicket.Component.renderComponent(Component.java:2597)
>>        at
>> org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1536)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at
>> org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1414)
>>        at
>> org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1601)
>>        at
>> org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
>>        at
>> org.apache.wicket.markup.html.form.Form.onComponentTagBody(Form.java:1926)
>>        at org.apache.wicket.Component.renderComponent(Component.java:2626)
>>        at
>> org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1536)
>>        at org.apache.wicket.markup.html.form.Form.onRender(Form.java:1997)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at
>> org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1414)
>>        at
>> org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1552)
>>        at org.apache.wicket.Page.onRender(Page.java:1545)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at org.apache.wicket.Page.renderPage(Page.java:914)
>>        at
>> org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:63)
>>        at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
>>        at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1258)
>>        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
>>        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
>>        at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:456)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:289)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at
>> org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
>>        at
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>        at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>>        at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>        at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>        at java.lang.Thread.run(Thread.java:619)
>> ERROR - RequestCycle               - Exception in rendering component:
>> [MarkupContainer [Component id = form]]
>> org.apache.wicket.WicketRuntimeException: Exception in rendering
>> component: [MarkupContainer [Component id = form]]
>>        at org.apache.wicket.Component.renderComponent(Component.java:2665)
>>        at
>> org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1536)
>>        at org.apache.wicket.markup.html.form.Form.onRender(Form.java:1997)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at
>> org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1414)
>>        at
>> org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1552)
>>        at org.apache.wicket.Page.onRender(Page.java:1545)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at org.apache.wicket.Page.renderPage(Page.java:914)
>>        at
>> org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:63)
>>        at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
>>        at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1258)
>>        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
>>        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
>>        at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:456)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:289)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at
>> org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
>>        at
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>        at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>>        at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>        at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>        at java.lang.Thread.run(Thread.java:619)
>> Caused by: org.hibernate.LazyInitializationException: failed to lazily
>> initialize a collection of role:
>> com.mycompany.persistence.domain.Message.lazyList, no session or
>> session was closed
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
>>        at
>> org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
>>        at
>> org.hibernate.collection.PersistentBag.size(PersistentBag.java:225)
>>        at
>> org.apache.wicket.markup.html.form.ListMultipleChoice.onComponentTag(ListMultipleChoice.java:246)
>>        at
>> org.apache.wicket.markup.html.form.CheckBoxMultipleChoice.onComponentTag(CheckBoxMultipleChoice.java:359)
>>        at org.apache.wicket.Component.renderComponent(Component.java:2597)
>>        at
>> org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1536)
>>        at org.apache.wicket.Component.render(Component.java:2457)
>>        at
>> org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1414)
>>        at
>> org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1601)
>>        at
>> org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1525)
>>        at
>> org.apache.wicket.markup.html.form.Form.onComponentTagBody(Form.java:1926)
>>        at org.apache.wicket.Component.renderComponent(Component.java:2626)
>>
>>
>>
>>
>>
>> On Thu, Oct 1, 2009 at 10:39 PM, Marcelo Fukushima <[email protected]>
>> wrote:
>> > while i couldnt identify which object is throwing the
>> > lazyInitialization, the problem is probably that the entity is not
>> > associated with the hibernate session. On the request that opens the
>> > ModalWindow you must either reload or reatach the entity
>> >
>> > On Thu, Oct 1, 2009 at 7:55 PM, Albert Romanius <[email protected]>
>> wrote:
>> >> Hi,
>> >>
>> >> I am working with wicket and jpa/hibernate/spring. I am trying to
>> >> create a ModalWindow, but I get a LazyLoadingException. I tryed the
>> >> OSIVpattern, but it did not work.
>> >> Using the modal inside a form does not make any difference also.
>> >>
>> >> Has anyone else this problem?
>> >>
>> >>
>> >> The page which the modalWindow is triggered has:
>> >> ===============
>> >>  AjaxLink link = new AjaxLink("openModal") {
>> >>                   �...@override
>> >>                    public void onClick(AjaxRequestTarget target) {
>> >>                        modalWindow.setPageCreator(new
>> >> ModalWindow.PageCreator() {
>> >>                            public Page createPage() {
>> >>                                return new MyModalPage(modalWindow,
>> >> messageListModel.getObject().get(0));
>> >>                            }
>> >>                        });
>> >>                        modalWindow.show(target);
>> >>                    }
>> >>   };
>> >> ==============
>> >>
>> >> #Modal Panel
>> >> ==============
>> >> public class MyModalPage extends WebPage {
>> >>
>> >>   �...@springbean
>> >>    GeneralRepository generalRepository;
>> >>
>> >>    Set<SubMessage> selectedSubs = new HashSet<SubMessage>();
>> >>
>> >> public MyModalPage(final ModalWindow window, Message message) {
>> >>
>> >>        Message showMessage = (Message)
>> >> generalRepository.<Message>getById(message.getId(), Message.class);
>> >>
>> >>        //showMessage.getLazyList().size();
>> >>
>> >>        Form f = new Form("form");
>> >>        add(f);
>> >>
>> >>        CheckBoxMultipleChoice subMessagesCB = new
>> CheckBoxMultipleChoice(
>> >>                "subMessages", new PropertyModel(this,
>> >> "selectedSubs"), showMessage.getLazyList());
>> >>        f.add(subMessagesCB);
>> >>
>> >>        AjaxButton saveButton = new AjaxButton("save") {
>> >>
>> >>           �...@override
>> >>            protected void onSubmit(AjaxRequestTarget target, Form<?>
>> arg1) {
>> >>                window.close(target);
>> >>            }
>> >>        };
>> >>
>> >>        f.add(saveButton);
>> >>
>> >>        add(new AjaxLink("closeCancel")
>> >>        {
>> >>           �...@override
>> >>            public void onClick(AjaxRequestTarget target)
>> >>            {
>> >>                window.close(target);
>> >>            }
>> >>        });
>> >>
>> >>
>> >>    }
>> >> ==========
>> >>
>> >>
>> >> --
>> >> Albert
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [email protected]
>> >> For additional commands, e-mail: [email protected]
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > http://mapsdev.blogspot.com/
>> > Marcelo Takeshi Fukushima
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [email protected]
>> > For additional commands, e-mail: [email protected]
>> >
>> >
>>
>>
>>
>> --
>> Albert
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
> --
> Pedro Henrique Oliveira dos Santos
>



-- 
http://mapsdev.blogspot.com/
Marcelo Takeshi Fukushima

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to