Re: LDM and OSIV problem
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
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
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
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