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=" Actualizar" update=":frmusuarios, growlEditar, dlgEditar" actionListener="#{usuarioBean.btnUpdateUsuario(act ionEvent)}" 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.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