Can't get my objects updated
germandev.net-seam.wje-online.de May 4, 2009 1:28 PMHi!
I want to create simple CRUD functionality for an Entity Bean. So I created a manager - SFSB that should do that. Everything works fine besides the fact, that I can't update my entity.
This is how that manager looks like:
@Stateful @Name("kundenManager") @Scope(ScopeType.CONVERSATION) public class KundenManagerBean implements KundenManager { @Logger private Log log; private String strPasswortWiederholung = ""; @DataModel("kunden") private List<Kunde> lstKunden; @DataModelSelection private Kunde objGewaehlterKunde = new Kunde(); public void loescheKunden() { objGewaehlterKunde = em.merge(objGewaehlterKunde); setObjGewaehlterKunde(em.merge(objGewaehlterKunde)); lstKunden.remove(objGewaehlterKunde); em.remove(objGewaehlterKunde); } @SuppressWarnings("unchecked") @Factory("kunden") public void findeKunden() { lstKunden = (List<Kunde>)em.createQuery("select k from Kunde k").getResultList(); } @PersistenceContext(type = PersistenceContextType.EXTENDED) EntityManager em; public void neuenKundenErstellen() { try{ //TODO validation em.persist(objGewaehlterKunde); objGewaehlterKunde = new Kunde(); log.info("Neuer Kunde angelegt"); }catch(Exception ex) { log.info(String.format("Exception: %s%nCause:%s%n", ex.getMessage(),ex.getCause())); ex.printStackTrace(); } } @Remove @Destroy public void remove(){} public void setStrPasswortWiederholung(String strPasswortWiederholung) { this.strPasswortWiederholung = strPasswortWiederholung; } public String getStrPasswortWiederholung() { return strPasswortWiederholung; } private void redirect() { org.jboss.seam.faces.Redirect objRedirect = new org.jboss.seam.faces.Redirect(); objRedirect.setViewId("/kundenListe.xhtml"); objRedirect.execute(); } public Kunde getObjGewaehlterKunde() { return objGewaehlterKunde; } public void setObjGewaehlterKunde(Kunde objGewaehlterKunde) { this.objGewaehlterKunde = objGewaehlterKunde; } public void kundeEditieren() { //what to do here? em.flush(); objGewaehlterKunde = new Kunde(); redirect(); } }
When I am going to edit a 'Kunde', the related object is stored inside the 'objGewaehlterKunde ' variable. Then, on the edit page, I access the fields of the object Kunde by #{kundenManager.objGewaehlterKunde.fieldname. The field values are loaded correctly. But when I try to edit a value and click on the button, that triggers the kundeEditieren() method nothing is saved. When looking at the output SQL on the console no Update Statement is triggered. The object seems to be empty at that position anyhow.
I looked through many examples, but don't find a way to realize the update. Where is my mistake?
Thank you in advance!