Error java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to class

Iniciado por S4ms3pi0l__, 14 Agosto 2019, 01:48 AM

0 Miembros y 1 Visitante están viendo este tema.

S4ms3pi0l__

Me gustaría algo de ayuda para resolver ese problemita de casteo. Se supone que, lo que tengo aquí:

Código (java) [Seleccionar]

String hql = "select\n" +
                    "    c.categoryId as IdCategoria,\n" +
                    "    c.name as nombre,\n" +
                    "    count(*) as Cantidad\n" +
                    "from Category c\n" +
                    "inner join c.filmCategories fc\n" +
                    "group by c.name";

       Iterator iterador  = s.createQuery(hql).list().iterator();
       
        while(iterador.hasNext()) {
            Object obj[] = (Object[]) iterador.next();
            System.out.println(obj[0]+" - "+obj[1] +" - "+obj[2]);
        }


Se tiene que mostrar en un reporte usando Jasper-Reports. Tengo la siguiente clase que manda a imprimir en el reporte, los elementos de la consulta:

Código (java) [Seleccionar]

public class CategoriaPelicula implements JRDataSource{
    private List<PeliculaC> lista4 = new ArrayList<PeliculaC>();
    private int indiceFact = -1;
   
    @Override
    public boolean next() throws JRException {
        return ++indiceFact < lista4.size();
    }

    @Override
    public Object getFieldValue(JRField jrf) throws JRException {
         Object valor = null;
         
         
         if("IdCategoria".equals(jrf.getName()))
       {
           valor = String.valueOf(lista4.get(indiceFact).getIdCategoria());
       }
       if("Nombre".equals(jrf.getName()))
       {
           String x = lista4.get(indiceFact).getNombre();
           valor = x;
       }
       if("Cantidad".equals(jrf.getName()))
       {
           valor = String.valueOf(lista4.get(indiceFact).getCantidad());
       }
       
       return valor;
    }
    /*El problema está en esta parte*/
    public void addPeliculaC(PeliculaC c){
        this.lista4.add(c);
    }
   /**/
    public void Limpiar(){
        if(indiceFact == -1)
            indiceFact = -1;
        else
            indiceFact -= 1;
    }
}



Y aquí es donde ejecuto la consulta para mi reporte:

Código (java) [Seleccionar]

private void Cargar4()
    {
        Session s = NewHibernateUtil.getSessionFactory().openSession();
         try
        {   
            Query query =  s.createQuery("select\n" +
                                        "    c.categoryId as idCategoria,\n" +
                                        "    c.name as nombre,\n" +
                                        "    count(*) as Cantidad\n" +
                                        "from Category c\n" +
                                        "inner join c.filmCategories fc\n" +
                                        "group by c.name");//.setResultTransformer(Transformers.aliasToBean(PeliculaC.class));
           
           
            List<PeliculaC> elist = query.list();
           
              for (PeliculaC e: elist)
            {
               DataSource4.addPeliculaC(e);
            }
       }catch( Exception io)
        {     //JOptionPane.showMessageDialog(null, "Fallo de conexion: "+io.toString());
            System.out.println("Fallo de conexion" + io.toString());
        }finally
        { 
            s.close();   
        }
    }


En resumen, lo que tengo de primero, tengo que transformarlo para imprimirlo en mi reporte de Jasper, pero he intentado de todo y sigo sin resolver ese problema. Espero puedan ayudarme.