Re: Java e Hibernate

3 respostas
Mauricio_Linhares

Qual é a exceção que ele está gerando?

Não seria melhor definir a HibernateException como sendo uma <global-exception> no Struts, pra poder redirecionar isso pra uma página de erros mais amigável não?

Pelo menos você tira esse monte de tratamento de exceção de dentro do Action. Esse código tá uma salada só :shock:

3 Respostas

Mauricio_Linhares

Pra ver como você pode definir um ExceptionHandler no Struts, dê uma olhada aqui:

http://struts.apache.org/userGuide/building_controller.html#exception_handler

E sobre o código, ele provavelmente está lançando uma exceção, mas ela está sendo “silenciada” nos seus blocos try-catch, porque eles não lançam ela “pra cima”, quando ela acontece.

Tente colocar um:

throw e;

Antes de fechar cada bloco “catch” e veja o que acontece.

Vai ficar algo assim:

catch (HibernateException e) {
 			e.printStackTrace();
 			errors.add(
 				ActionErrors.GLOBAL_ERROR,
 				new ActionError("erro.exception", e.getCause().getMessage()));
                        throw e;
                                           }
T

Eu tenho o seguinte código de exclusão… e nesse código eu estou tentando escluir um cadastro de fornecedor que pode possuir várias listas em seus registros… porém no momento em que tento excluir o forneBanco ele trava… alguém poderia ver o q está acontecendo?

public class FornecedorExcluirAction extends Action {

	public ActionForward execute(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception {

		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();
		DynaValidatorForm excluirLista = (DynaValidatorForm) form;
		//	DynaValidatorForm excluirListaRepres = (DynaValidatorForm) form;

		try {
			FornecedorDAO fornecedorDAO = new FornecedorDAO();
			FornecedorDoctoDAO fornecedorDocDAO = new FornecedorDoctoDAO();
			FornecedorDiretorDAO forneDirDAO = new FornecedorDiretorDAO();
			FornecedorRepresentantesDAO forneRepresDAO = new FornecedorRepresentantesDAO();
			FornecedorBancoDAO forneBancoDAO = new FornecedorBancoDAO();
			FornecedorSuspensaoDAO forneSuspensaoDAO =	new FornecedorSuspensaoDAO();

			
			FornecedorDocto fornecedorDoc = new FornecedorDocto();

			//excluirLista.get("codigForne");
			String[] idArray = (String[]) excluirLista.get("codigForne");
			List listFornecedor = new ArrayList();
			List listForneDir = new ArrayList();
			List listForneRepres = new ArrayList();
			List listForneBanco = new ArrayList();
			List listForneSuspensao = new ArrayList();

			String codigForne = "";

			for (int i = 0; i < idArray.length; i++) {

				codigForne = idArray[i];
				listFornecedor =	fornecedorDAO.getListForn(codigForne);
				listForneDir = forneDirDAO.getByDiretor(codigForne);
				listForneRepres = forneRepresDAO.getListRepresentantes(codigForne);
				listForneBanco = forneBancoDAO.getListBanco(codigForne);
				listForneSuspensao = forneSuspensaoDAO.getBySusp(codigForne);

				Iterator it = listForneDir.iterator();
				Iterator it1 = listForneRepres.iterator();
				Iterator it2 = listForneRepres.iterator();
				Iterator it3 = listForneBanco.iterator();

				FornecedorDiretor forneDir = new FornecedorDiretor();
				FornecedorRepresentantes forneRepres =	new FornecedorRepresentantes();
				FornecedorBanco forneBanco = new FornecedorBanco();
				FornecedorSuspensao forneSuspensao = new FornecedorSuspensao();
				Fornecedor fornecedor = new Fornecedor();

				while (it.hasNext()) {
					forneDir = (FornecedorDiretor) it.next();
					forneDirDAO.delete(forneDir);
				}
				
				while (it1.hasNext()) {
					forneDir = (FornecedorDiretor) it1.next();
					forneDirDAO.delete(forneDir);
				}

				
				while (it2.hasNext()) {
					forneBanco = (FornecedorBanco) it2.next();
					forneBancoDAO.delete(forneBanco);
				}
				
				while (it3.hasNext()) {
					forneSuspensao = (FornecedorSuspensao) it3.next();
					forneSuspensaoDAO.delete(forneSuspensao);
				}
				
				
				fornecedor = (Fornecedor)	fornecedorDAO.getListForn(codigForne);
				fornecedorDAO.delete(fornecedor);			
			}

			List list = fornecedorDAO.getList();
			if (list.isEmpty()) {
				request.getSession().removeAttribute("fornecedor");
			}

		} catch (HibernateException e) {
			e.printStackTrace();
			errors.add(
				ActionErrors.GLOBAL_ERROR,
				new ActionError("erro.exception", e.getCause().getMessage()));

		} catch (Exception e) {
			e.printStackTrace();
			errors.add(
				ActionErrors.GLOBAL_ERROR,
				new ActionError("erro.exception", e.getMessage()));
		}

		if (!errors.isEmpty()) {
			saveErrors(request, errors);

			forward = mapping.getInputForward();

		} else {
			forward = mapping.findForward("sucesso");
		}

		return (forward);
	}
}

valeu!!!

T

é q sou iniciante no Java com Hibernate… e por isso naum tenho idéias para solucionar problemas que podem ser simples…

não sei como utilizar esse … será q vc teria algum exemplo dele?

e esse meu cádigo não está gerando excessões ele apenas trava a aplicação…

Criado 9 de junho de 2005
Ultima resposta 9 de jun. de 2005
Respostas 3
Participantes 2