Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2014, 15:25
ivanchodmd
 
Fecha de Ingreso: julio-2014
Mensajes: 1
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Problema al traer datos de una tabla (hibernate, primefaces)

Buen dia estoy aprendiendo aprogramar en java y tengo un problema al traer datos desde una tabla, el campo es llave foranea y arroja un error. trabajo con hibernate y prime faces

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.co mpnitcom}" style="width: 200px"/>

</h:panelGrid>

<p:separator />
<p:commandButton value="&nbsp;Actualizar" update=":frmusuarios, growlEditar, dlgEditar" actionListener="#{usuarioBean.btnUpdateUsuario(act ionEvent)}" 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.getUserc odi())){
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.getUserp wd()))
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.co mpnitcom}": Target Unreachable, 'null' returned null) porque la variable no se inicializa y como esta marcada como not null no hace nada.


Agradezco cualquier ayuda

gracias