Re: Erro java.lang.ClassCastException

3 respostas
thiagossantos

Você deve estar atribuindo uma referência de subclasse a uma superclasse, aquela história que toda bicicleta é um veículo mas nem todo veículo é bicilcleta.

talvez seja lá no começo na parte

DynaValidatorForm fornecedorAba = (DynaValidatorForm) form;

colocar um try / catch ???

ele indica a linha onde o erro ocorre ???

3 Respostas

thiagossantos

provavelmente esse “session.get(…)” não retorna algo que pode fazer esse cast, tenta colocar um try / catch ai pra ver o que sai no printStackTrace (é assim que escreve? ainda não aprendi a lidar com “exceptions”, mas o “casting” eu já estudei.

Session session = sessionFactory.openSession(); FornecedorClasse forneClasse = (FornecedorClasse) session.get(FornecedorClasse.class, cod);

iai? aparece o que?

T

eu tenho a seguinte Action:

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

		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		ActionMessages mensagem = new ActionMessages();

		DynaValidatorForm fornecedorAba = (DynaValidatorForm) form;

		try {
			FornecedorClasseDAO forneClasseDAO = new FornecedorClasseDAO();
			FornecedorClasse forneClasse =	new FornecedorClasse();

			String[] idArray =	(String[]) fornecedorAba.get("codClaFor");
			
			//String cod = (String) fornecedorAba.get("codigForne");

			HttpSession session = request.getSession();

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

				forneClasse = forneClasseDAO.getByIdCodigForne(new Long(idArray[i]));
				forneClasseDAO.delete(forneClasse);
			}

			List listforneClasse = forneClasseDAO.getList();
			if (listforneClasse.isEmpty()) {

				request.getSession().removeAttribute("forneClasse");
			}

		} catch (HibernateException e) {

			// Report the error using the appropriate name and ID.
			errors.add(
				ActionErrors.GLOBAL_ERROR,
				new ActionError("erro.exception", e.getCause().getMessage()));

		} catch (Exception e) {

			// Report the error using the appropriate name and ID.
			errors.add(
				ActionErrors.GLOBAL_ERROR,
				new ActionError("erro.exception", e.getMessage()));

		}

		// If a message is required, save the specified key(s)
		// into the request for use by the <struts:errors> tag.

		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			mensagem.add(
				ActionMessages.GLOBAL_MESSAGE,
				new ActionMessage("falha excluir Material"));
			saveMessages(request, mensagem);
			forward = mapping.findForward("falha");

		} else {

			mensagem.add(
				ActionMessages.GLOBAL_MESSAGE,
				new ActionMessage("sucesso excluir Material"));
			saveMessages(request, mensagem);

			forward = mapping.findForward("sucesso");

		}

		return (forward);
	}

o código abaixo é o meu Bean:

public class FornecedorClasse {

	private Long codClaFor;
	private String codigForne;
	private String grupoMater;
	private String classMater;
	private String grupoServi;
	private String classServi;

	public String getClassMater() {
		return classMater;
	}

	public String getClassServi() {
		return classServi;
	}

	public Long getCodClaFor() {
		return codClaFor;
	}

	public String getCodigForne() {
		return codigForne;
	}

	public String getGrupoMater() {
		return grupoMater;
	}

	public String getGrupoServi() {
		return grupoServi;
	}

	public void setClassMater(String string) {
		classMater = string;
	}

	public void setClassServi(String string) {
		classServi = string;
	}

	public void setCodClaFor(Long long1) {
		codClaFor = long1;
	}

	public void setCodigForne(String string) {
		codigForne = string;
	}

	public void setGrupoMater(String string) {
		grupoMater = string;
	}

	public void setGrupoServi(String string) {
		grupoServi = string;
	}

}

e agora vem minha DAO:

public class FornecedorClasseDAO extends MasterDAO {
			
	public FornecedorClasse getByIdCodigForne(Long cod)
		throws HibernateException {
		Session session = sessionFactory.openSession();		
		FornecedorClasse forneClasse =	(FornecedorClasse) session.get(FornecedorClasse.class, cod);
		session.flush();
		session.close();
		return forneClasse;
	}	
	
}

mas quando eu chego na DAO onde ele vai efetuar a pesquisa de um objeto que contenha o codigo passado como parâmetro ele dá o erro:

java.lang.ClassCastException

alguém pode me dar uma solução?

Valeu!!!

T

o erro ocorre nessa linha da minha DAO:

FornecedorClasse forneClasse =	(FornecedorClasse) session.get(FornecedorClasse.class, cod);
Criado 17 de junho de 2005
Ultima resposta 17 de jun. de 2005
Respostas 3
Participantes 2