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]