Me gustaría algo de ayuda para resolver ese problemita de casteo. Se supone que, lo que tengo aquí:
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:
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:
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.