Problema ao excluir registro do banco usando dao.java

1 resposta
Kleber-rr

Olá pessoal, é o seguinte:

Estou com uma aplicação Web, usando java, postgresql, persistence, hibernate, dentre outras coisas...

O que eu estou tentando fazer é criar um método na minha classe usuariohandler para excluir um registro do meu banco. Eu tenho essa regra na minha classe Dao, que tem os métodos de salvar, merge, delete. O problema é que quando eu mando excluir aquele registro através da minha jsp, ele atualiza a página, mas naum exclui. Segue abaixo os códigos:

===== UsuarioHandler ======
public String excluir() {
		System.out.println("Excluindo: " + usuario.getCod_usuario());
		Session session = HibernateUtil.currentSession();
		Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
		usuarioDao.delete(this.usuario);
		return "excluido";

	}
===== Dao =====
package br.gov.rr.setrabes.dao;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Session;

public class Dao<T> {

	private static Logger logger = Logger.getLogger(Dao.class);
	private Class<T> persistentClass;
	private Session session;

	public Dao(Session session, Class<T> persistentClass) {
		this.session = session;
		this.persistentClass = persistentClass;
	}

	@SuppressWarnings("unchecked")
	public T load(Long id) {
		logger.info("lendo " + persistentClass + " com id " + id);
		return (T) session.load(persistentClass, id);
	}

	public void save(T t) {
		logger.info("salvando " + t);
		session.save(t);
	}

	public void delete(T t) {
		logger.info("deletando " + t);
		session.delete(t);
	}

	@SuppressWarnings("unchecked")
	public List<T> list() {
		logger.info("Listando todos");
		return session.createCriteria(persistentClass).list();
	}

	public void merge(T t) {
		logger.info("Salvando ou atualizando" + t);
		session.merge(t);
	}

}
===== JSP =====
<h:column>
			<f:facet name="header">
				<h:outputText value="Excluir"/>
			</f:facet>
			<h:commandButton value="Excluir" action="#{usuarioHandler.excluir}" />
		</h:column>

Alguem pode me ajudar?? Valeu.

1 Resposta

Kleber-rr

Pessoal, consegui resolver isso:
O problema estava no método excluir();

public String excluir(ActionEvent event) { //faltou criar a ação
		System.out.println("Excluindo: " + usuario.getCod_usuario());
		UIComponent link = event.getComponent();
		UIParameter param = (UIParameter) link.findComponent("editCod");
		Long id = (Long) param.getValue();

		Session session = HibernateUtil.currentSession();
		Dao<Usuario> usuarioDao = new Dao<Usuario>(session, Usuario.class);
		this.usuario = usuarioDao.load(id);
		usuarioDao.delete(this.usuario);
		this.usuario = new Usuario();
		return "excluido";

E na JSP faltou dizer que a ação correspondia àquela ActionEvent:

<h:column>
			<f:facet name="header">
				<h:outputText value="Excluir"/>
			</f:facet>
			<h:commandButton value="Excluir" actionListener="#{usuarioHandler.excluir}" />
		</h:column>

Valeu.

Criado 11 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 1
Participantes 1