Problema com relatório personalizado com hibernateTemplate + spring

0 respostas
java
R

Olá, estou com o seguinte problema:
Obtenho listas de entidades como essa da seguinte forma através do hibernate template.

public List<Atividade> listar() {
		List<Atividade> atividades = hibernateTemplate.find("from Atividade");
		return atividades;
	}`

Porém, agora precisava de uma especie de relatório mais elaborado ao invés de apenas os atributos de uma entidade, basicamente uso mais de uma classe modelo e o retorno é uma contagem e data, estou jogando em um List, mas não consigo recuperar os dados.

public List disciplinasEstudadasEDatas(Plano plano){
		try{	    			    			   			
			List estudadas = hibernateTemplate.find("select count(distinct c.disciplina) as quantidade, DATE_FORMAT(a.data_atividade, '%d-%m-%y') as data from Atividade a join a.cartao c where a.plano=? group by DATE_FORMAT(a.data_atividade, '%d-%m-%y') order by DATE_FORMAT(a.data_atividade, '%d-%m-%y') asc", plano);
			return estudadas;
		}catch(NullPointerException e){
			return null;
		}
	}

Então criei uma classe com os atributos quantidade inteiro e data date, para colocar no tipo de List e fazer como eu fazia normalmente, só que sem transformar em uma tabela física no banco de dados, porém também não está dando certo.

public class Estudada {

	private int quantidade;
	private Date data;
	
	public int getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}
	public Date getData() {
		return data;
	}
	public void setData(Date data) {
		this.data = data;
	}


public List<Estudada> disciplinasEstudadasEDatas(Plano plano){
		try{	
			List<Estudada> estudadas = hibernateTemplate.find("select count(distinct c.disciplina) as quantidade, DATE_FORMAT(a.data_atividade, '%d-%m-%y') as data from Atividade a join a.cartao c where a.plano=? group by DATE_FORMAT(a.data_atividade, '%d-%m-%y') order by DATE_FORMAT(a.data_atividade, '%d-%m-%y') asc", plano);
			return estudadas;
		}catch(NullPointerException e){
			return null;
		}
	}

Tentei só imprimir um atributo assim:

List<Estudada> estudadas = atividadeDAO.disciplinasEstudadasEDatas(plano);		
System.out.println(estudadas.get(0).getQuantidade());

E da o seguinte erro:

HTTP Status 500 - Request processing failed; nested exception is java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.flashconcursos.modelo.Estudada

type Exception report

message Request processing failed; nested exception is java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.flashconcursos.modelo.Estudada

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.flashconcursos.modelo.Estudada
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.flashconcursos.modelo.Estudada
	br.com.flashconcursos.controller.AtividadeController.Atividade(AtividadeController.java:84)
	br.com.flashconcursos.controller.AtividadeController$$FastClassByCGLIB$$6f5c9beb.invoke(<generated>)
	net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
	org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
	br.com.flashconcursos.controller.AtividadeController$$EnhancerByCGLIB$$bad1b384.Atividade(<generated>)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:606)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.67 logs.

Alguém sabe como posso fazer para recuperar esses dados e usa-los? Pois preciso jogar eles em um gráfico.

Criado 12 de março de 2016
Respostas 0
Participantes 1