Título: problema en la creacion de un crud en java usando hibernate Publicado por: ivanchodmd en 2 Julio 2014, 22:46 pm Buen dia, soy nuevo en este foro y en el desarrollo en java, estoy implementando un sistema de logueo basico de usuario (un crud) pero al momento de actualizar, eliminar o insertar no pasa nada y la verdad no encuentro el error
el codigo de la vista: <<h:form id="frmNuevo"> <p:dialog id="dlgNuevo" header="Nuevo Usuario" widgetVar="dlgNuevo" resizable="false" modal="true"> <p:growl id="growlNuevo" sticky="true" /> <h:panelGrid id="pgNuevo" columns="2" cellpadding="5" style="margin:0 auto;"> <h:outputText value="Codigo:" style="width: 200px" /> <h:outputText value="Nombres:" /> <p:inputText value="#{usuarioBean.selectedUsuario.usercodi}" alt="left" /> <p:inputText value="#{usuarioBean.selectedUsuario.usernombre}" style="width: 200px" /> <h:outputText value="Usuario:" /> <h:outputText value="Clave:" /> <p:inputText value="#{usuarioBean.selectedUsuario.userusuario}" style="width: 200px"/> <p:inputText value="#{usuarioBean.selectedUsuario.userpwd}" style="width: 200px" /> <h:outputText value="Perfil" /> <h:outputText value="Ciudad" /> <p:inputText value="#{usuarioBean.selectedUsuario.userperfil}" style="width: 200px"/> <p:inputText value="#{usuarioBean.selectedUsuario.mascompany}" style="width: 200px"/> </h:panelGrid> <p:separator/> <p:commandButton value=" Guardar" update=":frmusuarios, growlNuevo, dlgNuevo" actionListener="#{usuarioBean.btncreateUsuario(actionEvent)}" oncomplete="dlgNuevo.hide()" image="icon-guardar" ></p:commandButton> <p:commandButton value=" Cancelar" oncomplete="dlgNuevo.hide()" image="icon-cancelar"></p:commandButton> </p:dialog> </h:form> > el metodo: public boolean update(Masuser userusuario) { boolean flag; Session sesion = HibernateUtil.getSessionFactory().openSession(); try { sesion.beginTransaction(); sesion.update(userusuario); sesion.beginTransaction().commit(); flag =true; } catch (Exception e) { flag=false; sesion.beginTransaction().rollback(); } return flag; } el bean : public void btnUpdateUsuario (ActionEvent actionEvent){ UsuarioDao usuarioDao = new UsuarioDaoImpl(); String msg; if(usuarioDao.update(this.selectedUsuario)){ msg ="Se modifico correctamente el registro"; } else { msg ="Error al modificar el registro"; } si pudieran asesorarme se los agradeceria mucho gracias Título: Re: problema en la creacion de un crud en java usando hibernate Publicado por: Chuidiang en 6 Julio 2014, 21:38 pm Convendría que en el catch pusieras algo indicando que ha habido un error, así sabríamos si lo hay y tendríamos una pista de qué puede estar pasando. Lo que más información suele dar es un e.printStackTrace() (el e.getMessage() se queda corto, ya que no te dice la línea exacta del error dentro del try).
Se bueno. Título: Re: problema en la creacion de un crud en java usando hibernate Publicado por: ivanchodmd en 7 Julio 2014, 17:11 pm gracias por responder , he estado haciendo pruebas y me sale el error :Advertencia: /paginas/usuarios/empRegistrar.xhtml @99,96 value="#{usuarioBean.selectedUsuario.usercodi}": Target Unreachable, 'null' returned null
selectUsuario lo utilizo para traer los campos para usuarios nuevos y par editar pero parece que esta legando vacio, no encuentro una forma de solucionarlo. Codigo de la vista: <h:form id="frmEditar"> <p:dialog id="dlgEditar" header="Editar Usuario" widgetVar="dlgEditar" resizable="false" modal="true" > <p:growl id="growlEditar" showDetail="true" sticky="true" /> <h:panelGrid id="pgEditar" columns="2" cellpadding="4" style="margin:0 auto;"> <h:outputText value="Codigo:" style="width: 200px" /> <h:outputText value="Nombres:" /> <p:inputText value="#{usuarioBean.selectedUsuario.usercodi}" alt="left" /> <p:inputText value="#{usuarioBean.selectedUsuario.usernombre}" style="width: 200px" /> <h:outputText value="Usuario:"/> <h:outputText value="Clave:"/> <p:inputText value="#{usuarioBean.selectedUsuario.userusuario}" style="width: 200px"/> <p:inputText value="#{usuarioBean.selectedUsuario.userpwd}" style="width: 200px" /> <h:outputText value="Perfil"/> <h:outputText value="Nit"/> <p:inputText value="#{usuarioBean.selectedUsuario.userperfil}" style="width: 200px"/> <p:inputText value="#{usuarioBean.selectedUsuario.mascompany.compnitcom}" style="width: 200px"/> </h:panelGrid> <p:separator /> <p:commandButton value=" Actualizar" update=":frmusuarios, growlEditar, dlgEditar" actionListener="#{usuarioBean.btnUpdateUsuario(actionEvent)}" oncomplete="dlgEditar.hide()" image="icon-update" /> <p:commandButton value=" Cancelar" update=":frmusuarios" oncomplete="dlgEditar.hide()" image="icon-cancelar" /> </p:dialog> </h:form> codigo beans: @Named(value = "usuarioBean") @RequestScoped public class usuarioBean { private List <Masuser> usuarios; private Masuser selectedUsuario; public usuarioBean() { this.usuarios = new ArrayList <Masuser>(); } public List<Masuser> getUsuarios() { UsuarioDao usuarioDao = new UsuarioDaoImpl(); this.usuarios = usuarioDao.findAll(); return usuarios; } public Masuser getSelectedUsuario() { return selectedUsuario; } public void setSelectedUsuario(Masuser selectedUsuario) { this.selectedUsuario = selectedUsuario; } public void btncreateUsuario (ActionEvent actionEvent){ UsuarioDao usuarioDao = new UsuarioDaoImpl(); String msg; if(usuarioDao.create(this.selectedUsuario)){ msg ="Se creo correctamente el registro"; } else { msg ="Error al guardar el registro"; } FacesMessage message = new FacesMessage (FacesMessage.SEVERITY_INFO,msg,null); FacesContext.getCurrentInstance().addMessage(null, message); } public void btnUpdateUsuario (ActionEvent actionEvent){ selectedUsuario = new Masuser (); UsuarioDao usuarioDao = new UsuarioDaoImpl(); String msg; if(usuarioDao.update(this.selectedUsuario)){ msg ="Se modifico correctamente el registro"; } else { msg ="Error al modificar el registro"; } FacesMessage message = new FacesMessage (FacesMessage.SEVERITY_INFO,msg,null); FacesContext.getCurrentInstance().addMessage(null, message); } public void btnDeleteUsuario (ActionEvent actionEvent){ UsuarioDao usuarioDao = new UsuarioDaoImpl(); String msg; if(usuarioDao.delete(this.selectedUsuario.getUsercodi())){ msg ="Se elimino correctamente el registro"; FacesMessage message = new FacesMessage (FacesMessage.SEVERITY_INFO,msg,null); FacesContext.getCurrentInstance().addMessage(null, message); } else { msg ="Error al eliminar el registro"; FacesMessage message = new FacesMessage (FacesMessage.SEVERITY_ERROR,msg,null); FacesContext.getCurrentInstance().addMessage(null, message); } } } codigo implements: public class UsuarioDaoImpl implements UsuarioDao { @Override public Masuser findByUsuario(Masuser userusuario) { Masuser model = null; Session sesion = HibernateUtil.getSessionFactory().openSession(); String sql = "from Masuser where userusuario = '" + userusuario.getUserusuario() + "'"; try { sesion.beginTransaction(); model = (Masuser) sesion.createQuery(sql).uniqueResult(); sesion.beginTransaction().commit(); } catch (Exception e) { sesion.beginTransaction().rollback(); } return model; } @Override public Masuser login(Masuser userusuario) { Masuser model = this.findByUsuario(userusuario); if (model !=null) { if(!userusuario.getUserpwd().equals(model.getUserpwd())) model =null; } return model; } @Override public List<Masuser> findAll() { List<Masuser> listado = null; Session sesion = HibernateUtil.getSessionFactory().openSession(); String sql = "from Masuser"; try { sesion.beginTransaction(); listado = sesion.createQuery(sql).list(); sesion.beginTransaction().commit(); } catch (Exception e) { sesion.beginTransaction().rollback(); } return listado; } @Override public boolean create(Masuser userusuario) { boolean flag; Session sesion = HibernateUtil.getSessionFactory().openSession(); try { sesion.beginTransaction(); sesion.save(userusuario); sesion.beginTransaction().commit(); flag =true; } catch (Exception e) { flag=false; sesion.beginTransaction().rollback(); } return flag; } @Override public boolean update(Masuser userusuario) { boolean flag; Session sesion = HibernateUtil.getSessionFactory().openSession(); try { sesion.beginTransaction(); sesion.update(userusuario); sesion.beginTransaction().commit(); flag =true; } catch (Exception e) { flag=false; System.out.println("error"); sesion.beginTransaction().rollback(); } return flag; } @Override public boolean delete(String usercodi) { boolean flag; Session sesion = HibernateUtil.getSessionFactory().openSession(); try { sesion.beginTransaction(); Masuser usuario = (Masuser) sesion.load(Masuser.class, usercodi); sesion.delete(usuario); sesion.beginTransaction().commit(); flag =true; } catch (Exception e) { flag=false; sesion.beginTransaction().rollback(); } return flag; } } Iniicalice las variables en el Bean : this.selectedUsuario = new Masuser(); this.selectedUsuario.setUsercodi(""); this.selectedUsuario.setUsernombre(""); this.selectedUsuario.setUserpwd(""); this.selectedUsuario.setUserperfil(""); this.selectedUsuario.setUserusuario(""); con lo que quito la mayoria de los errores pero como el campo Compnitcom es una llave foranea desde otra tabla, me muestra el error (/paginas/usuarios/empRegistrar.xhtml @83,117 value="#{usuarioBean.selectedUsuario.mascompany.compnitcom}": Target Unreachable, 'null' returned null) porque la variable no se inicializa y como esta marcada como not null no hace nada. |