problema en la creacion de un crud en java usando hibernate

Iniciado por ivanchodmd, 2 Julio 2014, 22:46 PM

0 Miembros y 2 Visitantes están viendo este tema.

ivanchodmd

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="&nbsp;Guardar"   update=":frmusuarios, growlNuevo, dlgNuevo"  actionListener="#{usuarioBean.btncreateUsuario(actionEvent)}"  oncomplete="dlgNuevo.hide()" image="icon-guardar" ></p:commandButton>     
                <p:commandButton value="&nbsp;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

Chuidiang

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.

ivanchodmd

#2
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="&nbsp;Actualizar"   update=":frmusuarios, growlEditar, dlgEditar" actionListener="#{usuarioBean.btnUpdateUsuario(actionEvent)}"   oncomplete="dlgEditar.hide()" image="icon-update"  />  
               <p:commandButton   value="&nbsp;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.