I changed the param to look like yours:
new PropertyModel(blogModel, "categories")
...and I get the same exception...no luck!
On 4/11/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> you are still not using a model for the listview, you are binding the
> listview to hibernate's lazy initializable set instead in this line:
>
>
> add(new ListView("categoriesView", ((Blog)getModelObject())
> .getCategories())
>
> try changing that to:
>
> add(new ListView("categoriesView", new PropertyModel(blogModel,
> "categories"));
>
> or create a simple wrapper around blogmodel directly if you dont want to use
> "soft binding" and reflection.
>
> -Igor
>
>
>
>
> On 4/11/06, Vincent Jenks <[EMAIL PROTECTED]> wrote:
> >
> OK, this doesn't appear to work. I finally got around to testing this
> and I still get a
> LazyInitializationException.
>
> I passed the model around and it's barfing.
>
> "main" page (ViewBlog.class):
>
> //get object graph in detachable model
> IModel blogModel = new LoadableDetachableModel()
> {
> protected Object load()
> {
> //get blog & entries
> Blog blog =
> BlogProxy.getDefault();
> return blog;
> }
> };
>
> //set as page model
> setModel(blogModel);
>
> //add panel components
> add(new TopicsPanel("topicsPanel", blogModel));
>
> In the TopicsPanel class:
>
> public class TopicsPanel extends Panel
> {
> public TopicsPanel(String id, IModel blogModel)
> {
> super(id, blogModel);
>
> //get model object
> Blog blog = (Blog)getModelObject();
>
> //add list view repeater
> add(new ListView("categoriesView",
> ((Blog)getModelObject()).getCategories())
> {
> protected void
> populateItem(ListItem item)
> {
> //get row model
> final Category category =
> (Category)item.getModelObject();
>
> //create link
> Link categoryLink = new
> PageLink("categoryLink", ViewBlog.class)
> {
> public void
> onClick()
> {
>
> info("booyah!");
> }
> };
>
> //add category name label
> categoryLink.add(new
> Label("topic", category.getName()));
>
> //add link
> item.add(categoryLink);
> }
> });
> }
> }
>
> Where I'm trying to retrive the lazy collection in the ListView the
> session has still been lost.
>
> What have I done wrong? How can I get the lazily loaded collection
> and not have to resort to eager fetching?
>
> Remember, I'm not using Hibernate directly...I'm using JBoss EJB3 in
> JBoss 4.0.4RC1...I don't have a lot of control over Hibernate...no do
> I want to if I want to keep my project container-independent.
>
> Thanks!
>
> On 3/20/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> >
> > or pass the same model :)
> >
> >
> > -Igor
> >
> >
> >
> > On 3/20/06, Vincent Jenks <[EMAIL PROTECTED]> wrote:
> > >
> > > Well, in the previous page which passes the Product into this page...the
> object was wrapped in a detachable model...not just called directly...so I
> should try and wrap it again in the current page?
> > >
> > >
> > >
> > > On 3/20/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> > > >
> > > > instead of using the product object directly, use a detachable model.
> > > >
> > > > you might also need to use an open session in view interceptor in case
> jboss closes the hibernate session after your bean's method is finished
> executing. if it does this, then by the time wicket code runs the object is
> already disconnected from its session and thus cant load any child
> collections.
> > > >
> > > >
> > > > -Igor
> > > >
> > > >
> > > >
> > > >
> > > > On 3/20/06, Vincent Jenks < [EMAIL PROTECTED]> wrote:
> > > > >
> > > > > OK, so I'm in a bit of a quagmire.
> > > > >
> > > > > I'm using Wicket + EJB3 (JBoss 4.0.4RC1) which uses Hibernate as the
> persistence behind EJB3.
> > > > >
> > > > > Unless I set all of my parent/child object relationship annotations
> to EAGER fetching...I get this error:
> > > > >
> > > > > "org.hibernate.LazyInitializationException : failed
> to lazily initialize a collection of role:...."
> > > > >
> > > > > ...when I try to access the child collection of the parent object.
> In my case, for example, I am passing an object to a form in Wicket using
> the constructor:
> > > > >
> > > > > public class ProductDetail extends WebPage
> > > > > {
> > > > > public ProductDetail()
> > > > > {
> > > > > this(null);
> > > > > }
> > > > >
> > > > > public ProductDetail(Product product)
> > > > > {
> > > > > add(new
> ProductDetailForm("productDetailForm", product));
> > > > > ...
> > > > >
> > > > > The parent object being "Product" and the child being
> Product.getConfigurations()....which is a List<Configuration>.
> > > > >
> > > > > This same ProductDetail page has a form (see above where I passed
> the Product into the form)...and I need to access the child collection
> inside the form:
> > > > >
> > > > > add(new ListView("configs", product.getConfigurations())
> > > > > {
> > > > > protected void populateItem(ListItem item)
> > > > > {
> > > > > final Configuration config =
> (Configuration)item.getModelObject();
> > > > >
> > > > > item.add(new Label("quantity",
> String.valueOf(config.getQuantity())));
> > > > > item.add(new Label("name", config.getName()));
> > > > > item.add(new Label("weight",
> config.getWeight()));
> > > > > item.add(new Label("price", String.valueOf(
> config.getPrice())));
> > > > > }
> > > > > });
> > > > >
> > > > > badda-bing...here's when the exception occurs. Now...I *could* fix
> it by setting the collection to EAGER fetching...but this could eventually
> cause me some severe performance problems....especially once the collections
> begin to grow in size...I just have to be able to do LAZY fetching.
> > > > >
> > > > > Since I'm using EJB3 CMP I don't have control over the hibernate
> session - the container does...so my flexibility there is limited. Is there
> something I could do to work around this?
> > > > >
> > > > > Thanks!
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by xPML, a groundbreaking scripting language
> that extends applications into web and mobile media. Attend the live webcast
> and join the prime developer group breaking into this new coding territory!
> http://sel.as-us.falkag.net/sel?cmdlnk&kid0944&bid$1720&dat1642
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user