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.
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.
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)?