Good night everyone.
Objective: The main goal is to get the user ID and the code of the simulation he answered, and display this on another screen after he responds to this simulation, however, I have exception when trying to perform a query through of my Dao and I do not know how to solve it.
Exception:
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.sisEnade.tcc.modelo.Resposta
at com.sisEnade.tcc.dao.ResultadoSimuladoDAO.resultadoRespostasSimulado(ResultadoSimuladoDAO.java:22)
at com.sisEnade.tcc.controller.ResultadoSimuladoBean.init(ResultadoSimuladoBean.java:37)
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/sisEnade] threw exception [WELD-000049: Unable to invoke public void com.sisEnade.tcc.controller.ResultadoSimuladoBean.init() on com.sisEnade.tcc.controller.ResultadoSimuladoBean@74e35f8d] with root cause
... 91 more
DAO:
@Inject
private EntityManager manager;
// Métodos de buscas para resultado do aluno e futuramente relatórios..
public Resposta resultadoRespostasSimulado(Long codigoUsuario, Long codigoSimulado) {
Resposta resposta = (Resposta) manager.createQuery
("select u.nome, SUM(r.respostasAcertadas) as Respostas_Corretas from Resposta r "
+ "JOIN r.usuario u where r.usuario.codigo = ?1 AND r.simulado.codigo = ?2")
.setParameter(1, codigoUsuario)
.setParameter(2, codigoSimulado)
.getSingleResult();
return resposta;
}
The bean that is involved with this DAO is as follows:
@Inject
private ResultadoSimuladoDAO resultadoSimuladoDAO;
private Resposta resultado;
@PostConstruct
public void init() {
FacesContext fUsuario = FacesContext.getCurrentInstance();
HttpSession sessionUsuario = (HttpSession) fUsuario.getExternalContext().getSession(false);
Long codigoUsuario = (Long) sessionUsuario.getAttribute("identificaUsuario");
FacesContext fSimulado = FacesContext.getCurrentInstance();
HttpSession sessionSimulado = (HttpSession) fSimulado.getExternalContext().getSession(false);
Long codigoSimulado = (Long) sessionSimulado.getAttribute("identificaSimulado");
resultado = this.resultadoSimuladoDAO.resultadoRespostasSimulado(
codigoUsuario, codigoSimulado);
}
public Resposta getResultado() {
return resultado;
}