Error java.lang.Byte cannot be cast to java.lang.Integer

Iniciado por S4ms3pi0l__, 24 Agosto 2019, 04:15 AM

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

S4ms3pi0l__

Tengo el siguiente error: "java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer" cuando en ninguna parte tengo declarada alguna variable del tipo Byte. Lo mismo sucede con las otras dos líneas siguientes.

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");
           
           List<Object[]> res = query.list();
           List<PeliculaC> elist = new ArrayList<PeliculaC>();
           Iterator it = res.iterator();
           while(it.hasNext()){
               Object[] line = (Object[]) it.next();
               PeliculaC pc = new PeliculaC();
               pc.setIdCategoria((int) line[0]); //Esta es la línea donde me indica el error
               pc.setNombre((String) line[1]); //java.lang.Long cannot be cast to java.lang.String
               pc.setCantidad((int) line[2]); //java.lang.Byte cannot be cast to java.lang.Integer
               elist.add(pc);
           }
      }catch( Exception io)
       {     JOptionPane.showMessageDialog(null, "Fallo de conexion: "+io.toString());
           
       }finally
       {  
           s.close();    
       }
   }


Espero puedan ayudarme.

ivancea96

Si pones un breakpoint o pones algun log antes de los casts, podrias ver el tipo exacto que devuelve cada objeto (line[0], [1] y [2]). Con un line[0].getClass().getName() verías su tipo, y verías si los casts que estás haciendo son correctos o no.

Por otro lado, si miras en la base de datos, también podrías ver si los tipos son los que esperas. ¿Podría ser que "Caregory.caregoryId" sea de tipo BYTE (o el tipo correspondiente en la base de datos que uses)?