Erro Hibernate java.lang.ClassCastException: org.hibernate.collection.PersistentSet

2 respostas
O

Ola Pessoal. Tenho uma relacao de dois objetos que é o seguinte. Tenho Pregao que é composto por uma collection de Lote. No meu mapeamento eu coloquei.

<set name="lote" lazy="true" cascade="save-update" inverse="true">
	<key column="idPregao"/>
	<one-to-many class="Lote"/>
</set>

So que eu tenho um metodo que busca uma lista de pregao no banco de dados e envia esse objeto como atributo de requisicao ou sessao para a jsp.
Exemplo:

List<Pregao> lista = pregaoService.listaPregao();
request.setAtribute(......)

Na minha JSP eu percorro a lista e depois percorro pela lista de Lotes como:

<c:forEach var="pregao" items="${requesScope.lista}"
    ><c:forEach var="lote" items="${pregao.lote}">

Isso funciona normal. Se eu fizer dessa forma:

Pregao pregao = pregaoService.listaPregao();
List<Lote> lista = (List<Lote>)pregao.getLote();

Ele da o erro:

java.lang.ClassCastException: org.hibernate.collection.PersistentSet

Porque ele nao executa a conversao?

2 Respostas

Paulo_Silveira

Porque voce declarou no XML que é um Set, e nao um List. Troque em alguma das duas pontas… ou use anotacoes que ai voce nem precisaria falar isso.

O

Grande Paulo.
Porque se acaso eu fazer dessa forma eu consigo pegar sem precisar mudar no arquivo de configuracao? Ambos sao <set>

List<Pregao> pregoes = (List<Pregao>) this.pregaoService.listarPregao(Pregao.class);
HttpSession session = request.getSession();

E na JSP eu pegar assim funciona:

<c:foreach var="pregao" items="${sessionScope.pregao}">
    <c:forEach var="lote" items="${pregao.lote}">
     
    </c:forEach>
</c:forEach>

Mas se eu fizer assim ele da o erro posto em questao:

Pregao pregao = this.pregaoService.consultaPorIdPregao(Pregao.class, new Long(formLicita.getIdLicitacao()));
List<Lote> listaLotes = (List<Lote>)pregao.getLote();

Obrigado

Criado 5 de junho de 2008
Ultima resposta 5 de jun. de 2008
Respostas 2
Participantes 2