Thank you so much Ivan, I 'd rather use option number 1 as I like to leave transaction management as I 've already got it.
Related to the first option you mentioned and the code you posted... it's not necessary to override the name property with <p:name> ain't it? cheers, Nicolás.- On Mon, Nov 19, 2012 at 8:11 AM, Ivan Khalopik <ikhalo...@gmail.com> wrote: > You can try 2 options: > > 1. Use validation by name to prevent name changes before request to DB. It > will be executed before name property will be assigned to new value: > > @OnEvent(value=EventConstants.VALIDATE_FORM, component="nameField") > public void validateName() { > //... > } > > <t:beaneditform t:id="user" submitlabel="message:create-user"> > <p:name> > <t:label for="nameField"/> > <t:textfield t:id="nameField" value="user.name"/> > </p:name> > </t:beaneditform> > > 2. Retrieve profile in separate transaction with uncommited read isolation. > > > On Fri, Nov 16, 2012 at 5:15 PM, Nicolas Barrera <nbarr...@gmail.com> > wrote: > > > Hi all, > > > > I 'm not using the tapestry-hibernate module. > > > > I 'm using spring configured hibernate, tapestry-spring, and an open > > session in view spring filter. > > > > I can use BeanEditForm to create a new entity and save it, the problem is > > when trying to modify an existing entity. > > > > My problem is that during activation after submission I get an unmodified > > instance of the entity from the database, > > after that the beaneditform modifies the properties of that entity and > > during validation when the DAO performs a criteria query > > by name changes on the entity object are being flushed to the database. > > > > I wonder how does the tapestry-hibernate module handles these kind of > > trouble, > > > > Here is my code: > > > > @OnEvent(value=EventConstants.ACTIVATE) > > > public void activate(Long profileId) { > > > profile = this.profileDAO.load(profileId); > > > } > > > > > > @OnEvent(value=EventConstants.PASSIVATE) > > > public Long passivate() { > > > return this.profile.getId(); > > > } > > > > > > @Log > > > @OnEvent(value=EventConstants.VALIDATE_FORM) > > > public void validate() { > > > try { > > > // validating if the new name already exists, if it does > fail > > > validation > > > this.profileDAO.getByName(profile.getName()); > > > > > > > > > this.profileForm.recordError(messages.get("error.profile.already.exists")); > > > } catch(ModelException me) { > > > // validation is expecting this exception, I know it's > nasty > > > but... > > > } > > > > > > } > > > > > > @OnEvent(value=EventConstants.SUCCESS) > > > public Object persistNewUser() throws ModelException { > > > this.profileDAO.save(profile); > > > return ListProfiles.class; > > > } > > > > > > > tried evicting the instance from the session on prepareForSubmit but then > > (as the entity is lazy) beaneditform fails trying to set the properties. > > > > Right now I 'll avoid using beaneditform for modification pages but I 'd > > definitely prefer using it! > > > > thank you so much, > > > > cheers > > > > Nicolás.- > > > > > > -- > BR > Ivan >