CRUD jsf con primefaces y Hibernate no me actualiza ni elimina
buenas chicos , soy nuevo en esta pagina y he estado buscando una solución para mi problema hace días ... espero me puedan ayudar ....
voy al grano , la cosa es que no me tira ningún tipo de error el log de glassfish y ya no se donde mirar para ver el error les adjuntare el codigo para que vean mejor ...
este es el DAO.usuarioDaoImpl aqui están los metodos update y delete .
public boolean update(CuentaUsuario usuario) {
boolean flag;
Configuration configuration = new Configuration();
SessionFactory sessionFactory =configuration.configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
try {
transaction.begin();
CuentaUsuario usuariodb = new CuentaUsuario();
usuariodb.setUsername(usuario.getUsername());
usuariodb.setIdRol(usuario.getIdRol());
usuariodb.setCorreo(usuario.getCorreo());
session.update(usuariodb);
transaction.commit();
session.close();
flag = true;
} catch (Exception e) {
flag = false;
session.beginTransaction().rollback();
}
return flag;
}
@Override
public boolean delete(Integer id) {
boolean flag;
Configuration configuration = new Configuration();
SessionFactory sessionFactory =configuration.configure().buildSessionFactory();
Session session = sessionFactory.openSession();
try {
CuentaUsuario usuario = (CuentaUsuario) session.load(CuentaUsuario.class, id);
session.beginTransaction();
session.delete(usuario);
session.beginTransaction().commit();
flag = true;
} catch (Exception e) {
flag = false;
session.beginTransaction().rollback();
}
return flag;
}
Aqui el bean
private List<CuentaUsuario> usuarios;
private CuentaUsuario selectedUsuarios;
public CuentaUsuarioBean() {
this.usuarios = new ArrayList<CuentaUsuario>();
this.selectedUsuarios = new CuentaUsuario();
}
public List<CuentaUsuario> getUsuarios() {
UsuarioDao usuarioDao = new UsuarioDaoImpl();
this.usuarios = usuarioDao.findAll();
return usuarios;
}
public CuentaUsuario getSelectedUsuarios() {
return selectedUsuarios;
}
public void setSelectedUsuarios(CuentaUsuario selectedUsuarios) {
this.selectedUsuarios = selectedUsuarios;
}
public void btnCreateCuenta(ActionEvent actionEvent) {
UsuarioDao usuarioDao = new UsuarioDaoImpl();
String msg;
Date hoy = new Date();
String fecha = new SimpleDateFormat("yyyy-MM-dd").format(hoy);
this.selectedUsuarios.setFechaCreacion(java.sql.Date.valueOf(fecha));
if (usuarioDao.create(this.selectedUsuarios)) {
msg = "se creo correctamento el registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
} else {
msg = "error al crear registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void btnUpdateCuenta() {
UsuarioDao usuarioDao = new UsuarioDaoImpl();
String msg;
if (usuarioDao.update(this.selectedUsuarios)!= false) {
msg = "se modificó correctamento el registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
} else {
msg = "error al modificar registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void btnDeleteCuenta() {
String msg;
UsuarioDao usuarioDao = new UsuarioDaoImpl();
if (usuarioDao.delete(this.selectedUsuarios.getIdcuentaUsuario())) {
msg = "se eliminó correctamento el registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
} else {
msg = "error al eliminar registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
}
y aqui la vista
<ui:composition template="#{appBean.baseUrl}template/Template.xhtml">
<ui:define name="content">
<p:growl id="msgs" showDetail="true" />
<h:form>
<p:commandButton id="btnUsuarioCreate" update=":formCreate" oncomplete="dialogUsuarioCreate.show()" icon="ui-icon-document" title="Crear Cuenta" value="Nueva Cuenta" />
</h:form>
<h:form id="formDataTable">
<p:dataTable id="cuentas" var="usuario" value="#{cuentaUsuarioBean.usuarios}">
<p:column headerText="Id" style="width:5%">
<h:outputText value="#{usuario.idcuentaUsuario}" />
</p:column>
<p:column headerText="Usuario" style="width:24%">
<h:outputText value="#{usuario.username}" />
</p:column>
<p:column headerText="Password" style="width:24%">
<h:outputText value="#{usuario.password}" />
</p:column>
<p:column headerText="Fecha Creacion" style="width:24%">
<h:outputText value="#{usuario.fechaCreacion}" />
</p:column>
<p:column headerText="Correo e-" style="width:24%">
<h:outputText value="#{usuario.correo}" />
</p:column>
<p:column headerText="Rol" style="width:24%">
<h:outputText value="#{usuario.idRol}" />
</p:column>
<p:column style="width:4%">
<p:commandButton id="btnUpdate" update=":formUpdate" oncomplete="dialogUsuarioUpdate.show()" icon="ui-icon-arrowrefresh-1-e" title="Actualizar">
<f:setPropertyActionListener value="#{usuario}" target="#{cuentaUsuarioBean.selectedUsuarios}" />
</p:commandButton>
<p:commandButton id="btnDelete" update=":formDelete" oncomplete="dialogUsuarioDelete.show()" icon="ui-icon-trash" title="Eliminar">
<f:setPropertyActionListener value="#{usuario}" target="#{cuentaUsuarioBean.selectedUsuarios}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
<h:form id ="formCreate">
<p:dialog header="CREACION DE CUENTA" widgetVar="dialogUsuarioCreate" resizable="false" id="dlgUsuarioCreate"
showEffect="fade" hideEffect="explode" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Usuario :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.username}"/>
<h:outputText value="Password :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.password}"/>
<h:outputText value="Rol :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.idRol}"/>
<h:outputText value="Correo :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.correo}" size="30"/>
<f:facet name="footer">
<p:separator />
<p:commandButton id="btnCreateAceptar" update=":formDataTable , :msgs" oncomplete="dialogUsuarioCreate.hide()" actionListener="#{cuentaUsuarioBean.btnCreateCuenta(actionEvent)}" icon="ui-icon-disk" title="guardar" value="Guardar" />
<p:commandButton id="btnCreateCancelar" oncomplete="dialogUsuarioCreate.hide()" icon="ui-icon-circle-close" title="Cancelar" value="Cancelar" />
</f:facet>
</h:panelGrid>
</p:dialog>
</h:form>
<h:form id ="formUpdate">
<p:dialog header="MODIFICAR CUENTA DE USUARIO" widgetVar="dialogUsuarioUpdate" resizable="false" id="dlgUsuarioUpdate"
showEffect="fade" hideEffect="explode" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Id :" />
<h:outputText value="#{cuentaUsuarioBean.selectedUsuarios.idcuentaUsuario}"/>
<h:outputText value="Usuario :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.username}"/>
<h:outputText value="Rol :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.idRol}"/>
<h:outputText value="Correo :" />
<p:inputText value="#{cuentaUsuarioBean.selectedUsuarios.correo}" size="30"/>
<f:facet name="footer">
<p:separator />
<p:commandButton id="btnUpdateAceptar" update=":formDataTable , :msgs" oncomplete="dialogUsuarioUpdate.hide()" actionListener="#{cuentaUsuarioBean.btnUpdateCuenta()}" icon="ui-icon-disk" title="guardar" value="Guardar" />
<p:commandButton id="btnUpdateCancelar" onclick="dialogUsuarioUpdate.hide()" icon="ui-icon-circle-close" title="Cancelar" value="Cancelar" />
</f:facet>
</h:panelGrid>
</p:dialog>
</h:form>
<h:form id="formDelete">
<p:confirmDialog id="confirmDialog" message="¿Está seguro de eliminar?" showEffect="fade" hideEffect="explode"
header="Borrando Datos ..." severity="alert" widgetVar="dialogUsuarioDelete">
<h:inputHidden value="#{cuentaUsuarioBean.selectedUsuarios.idcuentaUsuario}"/>
<p:commandButton id="confirm" value="Aceptar" update=":msgs " oncomplete="dialogUsuarioDelete.hide()" actionListener="#{cuentaUsuarioBean.btnDeleteCuenta()}" icon="ui-icon-circle-check"/>
<p:commandButton id="decline" value="Cancelar" onclick="dialogUsuarioDelete.hide" type="button" icon="ui-icon-circle-close"/>
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>
</body>
- Inicie sesión o regístrese para enviar comentarios
Help
Alguien nos puede ayudar ?
Pequeña satisfacción...
De un primer vistazo, me parece ver algunos desaciertos cuando utilizas Hibernate.
beginTransaction()
Un idioma típico con Hibernate es similar al siguiente:
Transaction tx = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
tx = session.beginTransaction();
tx.setTimeout(5);
//doSomething(session);
tx.commit();
} catch (RuntimeException e) {
try {
tx.rollback();
} catch(RuntimeException rbe) {
log.error("Couldn't roll back transaction", rbe);
}
throw e;
} finally {
if(session!=null){
session.close();
}
}
Quizás haya algunas otras cosas que arreglar... Sin embargo, dejaré esa satisfacción para ti/ustedes. =)
~~~
no se que pasa
Creo que puede ...., porque he probado con primefaces mas antiguos y funciona , creo que el problema va por ahí con el primefaces 5.0...
Proyecto ejecutable
Lamentablemente es muy dificil ayudar en este tipo de cosas cuando no se tiene el proyecto con el error a la mano con una pequeña parte del problema para que alguien lo baje y lo ejecute, para eso existe github y muchas plataformas para almacenar el código, creo que por lo menos al pedir ayuda un proyecto demo le facilitaria la vida a las personas que ofrecen su ayuda.