Re: LDM and OSIV problem

2009-11-12 Thread Jeremy Thomerson
A single bean for a wizard is a good idea.  But typically you can't use a
detachable model in a wizard because you can't persist the state between
wizard steps.  Therefore, you need to just hold the bean in the component or
in a static model that will not detach between steps.

--
Jeremy Thomerson
http://www.wickettraining.com



On Thu, Nov 12, 2009 at 7:03 AM, Fernando Wermus
wrote:

> Jeremy,
> Thanks a lot. This was the problem. But then I have a question about
> design I made:
>
> I am using wizard a lot and I found that having a "bean" that collects al
> the entitties through the steps makes my code cleaner. For instance, I can
> hide some model manipulation into it. But I rose this situation, where I
> had
> to implement IDetachable in my bean.
>
> What do you think about?
>
>
>
> On Wed, Nov 11, 2009 at 5:16 PM, Jeremy Thomerson <
> jer...@wickettraining.com
> > wrote:
>
> > Are you holding the model as an instance variable somewhere?  If so,
> you'll
> > need to detach it manually.  The component only auto-detaches the default
> > model.
> >
> > i.e. this will get auto-detached:
> >
> > public class SomeComponent extends Component {
> >  public SomeComponent(String id, IModel model) {
> >super(id, model); // this will go into default model and will be
> > auto-detached
> >  }
> > }
> >
> > i.e. this will NOT get auto-detached:
> >
> > public class SomeComponent extends Component {
> >  private IModel myModel;
> >  public SomeComponent(String id, IModel model) {
> >super(id);
> >myModel = model; // this will not be auto-detached
> >  }
> >
> >  // you need this:
> >  public void onDetach() {
> >myModel.detach();
> >  }
> > }
> >
> >
> >
> > --
> > Jeremy Thomerson
> > http://www.wickettraining.com
> >
> >
> >
> > On Wed, Nov 11, 2009 at 10:52 AM, Fernando Wermus <
> > fernando.wer...@gmail.com
> > > wrote:
> >
> > > Hi all,
> > > I have a wizard with five wizardSteps.
> > >
> > > Also I have an LDM called EntityModel,
> > >
> > > EntityModel extends LDM{
> > >
> > > EntityModel(Key key)
> > >this.key=key;
> > > }
> > >
> > > load(){   // I  look up for the entity with the key}
> > >
> > > }
> > >
> > > But I have a case where it doesnt behave as expected.
> > > There is a case where the fifth step consults to EntityModel to get the
> > > entity and it doesnt look up the db because it does have the entity in
> > its
> > > transient attribute. Thus, I got a LazyLoadingException.
> > >
> > > Isnt it supposed that  LDMs get rid off transient objects for each
> > request?
> > >
> > > Why is this case behaving in this way?
> > >
> > > Am I supposed to overwrite onAttach to verify that the entity attached
> is
> > > not still connected to the session? I thought LDM will work it out.
> > >
> > > thanks in advance
> > >
> > > --
> > > Fernando Wermus.
> > >
> > > www.linkedin.com/in/fernandowermus
> > >
> >
>
>
>
> --
> Fernando Wermus.
>
> www.linkedin.com/in/fernandowermus
>


Re: LDM and OSIV problem

2009-11-12 Thread Fernando Wermus
Jeremy,
 Thanks a lot. This was the problem. But then I have a question about
design I made:

I am using wizard a lot and I found that having a "bean" that collects al
the entitties through the steps makes my code cleaner. For instance, I can
hide some model manipulation into it. But I rose this situation, where I had
to implement IDetachable in my bean.

What do you think about?



On Wed, Nov 11, 2009 at 5:16 PM, Jeremy Thomerson  wrote:

> Are you holding the model as an instance variable somewhere?  If so, you'll
> need to detach it manually.  The component only auto-detaches the default
> model.
>
> i.e. this will get auto-detached:
>
> public class SomeComponent extends Component {
>  public SomeComponent(String id, IModel model) {
>super(id, model); // this will go into default model and will be
> auto-detached
>  }
> }
>
> i.e. this will NOT get auto-detached:
>
> public class SomeComponent extends Component {
>  private IModel myModel;
>  public SomeComponent(String id, IModel model) {
>super(id);
>myModel = model; // this will not be auto-detached
>  }
>
>  // you need this:
>  public void onDetach() {
>myModel.detach();
>  }
> }
>
>
>
> --
> Jeremy Thomerson
> http://www.wickettraining.com
>
>
>
> On Wed, Nov 11, 2009 at 10:52 AM, Fernando Wermus <
> fernando.wer...@gmail.com
> > wrote:
>
> > Hi all,
> > I have a wizard with five wizardSteps.
> >
> > Also I have an LDM called EntityModel,
> >
> > EntityModel extends LDM{
> >
> > EntityModel(Key key)
> >this.key=key;
> > }
> >
> > load(){   // I  look up for the entity with the key}
> >
> > }
> >
> > But I have a case where it doesnt behave as expected.
> > There is a case where the fifth step consults to EntityModel to get the
> > entity and it doesnt look up the db because it does have the entity in
> its
> > transient attribute. Thus, I got a LazyLoadingException.
> >
> > Isnt it supposed that  LDMs get rid off transient objects for each
> request?
> >
> > Why is this case behaving in this way?
> >
> > Am I supposed to overwrite onAttach to verify that the entity attached is
> > not still connected to the session? I thought LDM will work it out.
> >
> > thanks in advance
> >
> > --
> > Fernando Wermus.
> >
> > www.linkedin.com/in/fernandowermus
> >
>



-- 
Fernando Wermus.

www.linkedin.com/in/fernandowermus


Re: LDM and OSIV problem

2009-11-11 Thread Jeremy Thomerson
Are you holding the model as an instance variable somewhere?  If so, you'll
need to detach it manually.  The component only auto-detaches the default
model.

i.e. this will get auto-detached:

public class SomeComponent extends Component {
  public SomeComponent(String id, IModel model) {
super(id, model); // this will go into default model and will be
auto-detached
  }
}

i.e. this will NOT get auto-detached:

public class SomeComponent extends Component {
  private IModel myModel;
  public SomeComponent(String id, IModel model) {
super(id);
myModel = model; // this will not be auto-detached
  }

  // you need this:
  public void onDetach() {
myModel.detach();
  }
}



--
Jeremy Thomerson
http://www.wickettraining.com



On Wed, Nov 11, 2009 at 10:52 AM, Fernando Wermus  wrote:

> Hi all,
> I have a wizard with five wizardSteps.
>
> Also I have an LDM called EntityModel,
>
> EntityModel extends LDM{
>
> EntityModel(Key key)
>this.key=key;
> }
>
> load(){   // I  look up for the entity with the key}
>
> }
>
> But I have a case where it doesnt behave as expected.
> There is a case where the fifth step consults to EntityModel to get the
> entity and it doesnt look up the db because it does have the entity in its
> transient attribute. Thus, I got a LazyLoadingException.
>
> Isnt it supposed that  LDMs get rid off transient objects for each request?
>
> Why is this case behaving in this way?
>
> Am I supposed to overwrite onAttach to verify that the entity attached is
> not still connected to the session? I thought LDM will work it out.
>
> thanks in advance
>
> --
> Fernando Wermus.
>
> www.linkedin.com/in/fernandowermus
>


LDM and OSIV problem

2009-11-11 Thread Fernando Wermus
Hi all,
 I have a wizard with five wizardSteps.

Also I have an LDM called EntityModel,

EntityModel extends LDM{

EntityModel(Key key)
this.key=key;
}

load(){   // I  look up for the entity with the key}

}

But I have a case where it doesnt behave as expected.
There is a case where the fifth step consults to EntityModel to get the
entity and it doesnt look up the db because it does have the entity in its
transient attribute. Thus, I got a LazyLoadingException.

Isnt it supposed that  LDMs get rid off transient objects for each request?

Why is this case behaving in this way?

Am I supposed to overwrite onAttach to verify that the entity attached is
not still connected to the session? I thought LDM will work it out.

thanks in advance

-- 
Fernando Wermus.

www.linkedin.com/in/fernandowermus