Hola a todos. Tengo una duda de Projections y espero me puedan ayudar. Estoy usando Criteria y Projections para generar este query:
Código:
select count(*) as y0, M.COA_ID as y1
from T_ACT_MAPPING M
where M.ACTUAL_MAPPING = 'Y'
and M.COA_ID in (select C.COA_ID as y0
from T_COA C
where C.IS_ACTIVE = 'Y')
group by M.COA_ID
Este es el código que uso en mi DAO:
Código:
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();
El query que me genera es correcto, lo que no se es como obtener el valor del count. Por ejemplo, al ejecutar el query que me da hibernate en la BD este es el resultado:
Código:
Y0 Y1
2 584
3 580
3 581
3 583
3 720
1 585
2 683
2 601
2 644
Mi duda es, si tengo que agregar un campo count al bean o cómo puedo obtener los valores de Y0. Espero haber sido lo suficientemente claro y me puedan ayudar. Un saludo y muchas gracias.