Tuesday 15 March 2011

java - How to update an object that comes from a Play Framework 2.0 form using Spring+JPA? -



java - How to update an object that comes from a Play Framework 2.0 form using Spring+JPA? -

i using play framework 2.10 + spring , jpa. didn't utilize ebeans because in future versions of play deprecated, as stated here.

i trying update object comes database, changed in play form, , comes updated. problem each time save object using spring repository creates new entity. controller code appears below.

package controllers; import model.doctor; import repositories.doctorrepository; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import play.data.form; import play.mvc.result; import views.html.doctores.blank; import views.html.doctores.show; @controller public class doctores { @autowired public doctorrepository doctorrepository; private static final form<doctor> doctorform = form.form(doctor.class); public result save() { form<doctor> boundform = doctorform.bindfromrequest(); if (boundform.haserrors()) { homecoming play.mvc.controller.badrequest(blank.render(boundform)); } doc doctor = boundform.get(); doctorrepository.save(doctor); homecoming play.mvc.controller.redirect(routes.doctores.list()); } public result show(long id) { final doc doctor = doctorrepository.findone(id); if (doctor == null) { homecoming play.mvc.controller.notfound(string.format("doctor %s no existe.", id)); } form<doctor> filledform = doctorform.fill(doctor); homecoming play.mvc.controller.ok(show.render(filledform)); } }

i don't want temporally store object in play's cache or session, restore it, , manually find out attributes changed. how can update object?

you need utilize merge() method.

doctor doc = boundform.get(); doctor.merge(); homecoming play.mvc.controller.redirect(routes.doctores.list());

make sure doc object has primary key field set. can achieved, example, adding hidden field form.

java spring jpa playframework-2.0

No comments:

Post a Comment