Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/04/2009, 14:35
Avatar de Wayern
Wayern
 
Fecha de Ingreso: septiembre-2008
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Duda de Hibernate

Hola de nuevo. Encontré la forma de obtener los datos que trae el query, aunque no es la más óptima o al menos no me lo parece. Lo que pasa es que cuando agregamos algún Projection a nuestro Criteria este deja de regresarnos un objeto o lista de objetos del tipo de la entidad, para regresarnos un objeto tipo Object o un List<Object>, lo unico que se me ocurrió hacer fue esto:
Código:
List<Object> objList;
Criteria c=getSession().createCriteria(TActMapping.class);
DetachedCriteria dt=
DetachedCriteria.forClass(TCoa.class).setProjection(Property.forName("coaId"))
			.add(Restrictions.eq("isActive", Constants.YES));
				ProjectionList proList = Projections.projectionList();
proList.add(Projections.rowCount());
proList.add(Projections.groupProperty("coaId"));
c.setProjection(proList);
c.add(Restrictions.eq("actualMapping", Constants.YES));
c.add(Property.forName("coaId").in(dt));
objList=(List<Object>)c.list();

for (int i= 0; i< objList.size(); i++) {
     final Object objs[] = (Object[]) objList.get(i);
     for(int j=0; j<objs.length; j++){
          System.out.println("****"+files[j]);
          //Insertar código
     }
}
Lo que estoy haciendo es obteniendo todos los elementos de la lista y los estoy metiendo en un array de Object, de esta forma podemos utilizarlos en nuestros métodos como mejor nos convenga. Decia que no es una forma muy óptima porque tenemos que saber el orden en que se nos va a regresar el resultado, en este caso, tengo que saber si en el primer elemento del array se va a guardar el valor del rowCount o si se va a guardar un objeto tipo Coa, pero con un poquito de analisis no creo que haya bronca. No cheque que pasabe utilizando un forEach, si alguno lo hace le agradecere me comente que tal le funcionó. Si alguien tiene una duda similar, espero le sirva este método. Saludos.