List of usage examples for org.hibernate.criterion Projections groupProperty
public static PropertyProjection groupProperty(String propertyName)
From source file:com.ut.tekir.report.ContactStatusReportBean.java
License:LGPL
public DetachedCriteria buildCriteria() { DetachedCriteria crit = DetachedCriteria.forClass(FinanceTxn.class); crit.createAlias("contact", "contact"); crit.setProjection(Projections.projectionList().add(Projections.groupProperty("contact.code"), "concode") .add(Projections.groupProperty("contact.fullname"), "conname") .add(Projections.groupProperty("contact.company"), "company") .add(Projections.groupProperty("contact.person"), "person") //.add( Projections.groupProperty("action"), "action" ) //.add( Projections.groupProperty("amount.currency"), "currency" ) .add(Projections.sum("amount.value"), "amount") .add(Projections.sum("amount.localAmount"), "localAmount") .add(Projections.sqlGroupProjection( "{alias}.CCY as currency, sum( case {alias}.finance_action when 0 then {alias}.CCYVAL else 0 end ) as DEBIT, sum( case {alias}.finance_action when 0 then 0 else {alias}.CCYVAL end ) as CREDIT", "{alias}.CCY", new String[] { "currency", "debit", "credit" }, new Type[] { Hibernate.STRING, Hibernate.BIG_DECIMAL, Hibernate.BIG_DECIMAL }))); if (fm.getActive() != null) { crit.add(Restrictions.eq("active", fm.getActive())); }/* w ww.j a v a 2s . co m*/ if (StringUtils.isNotEmpty(fm.getCode())) { crit.add(Restrictions.ilike("contact.code", fm.getCode(), MatchMode.START)); } if (StringUtils.isNotEmpty(fm.getName())) { crit.add(Restrictions.ilike("contact.name", fm.getName(), MatchMode.START)); } if (fm.getCategory() != null) { crit.add(Restrictions.eq("contact.category", fm.getCategory())); } if (fm.getBeginDate() != null) { crit.add(Restrictions.ge("date", fm.getBeginDate())); } if (fm.getEndDate() != null) { crit.add(Restrictions.le("date", fm.getEndDate())); } if (fm.getCompanyType() != null && !fm.getCompanyType().equals("All")) { if (fm.getCompanyType().equals("Person")) { crit.add(Restrictions.eq("contact.person", Boolean.TRUE)); } else crit.add(Restrictions.eq("contact.person", Boolean.FALSE)); } if (fm.getType() != null && fm.getType() != ContactType.All) { crit.add(Restrictions.eq("contact." + fm.getType().toString().toLowerCase() + "Type", Boolean.TRUE)); } if (StringUtils.isNotEmpty(fm.getExCode1())) { crit.add(Restrictions.ilike("contact.exCode1", fm.getExCode1(), MatchMode.START)); } if (StringUtils.isNotEmpty(fm.getExCode2())) { crit.add(Restrictions.ilike("contact.exCode2", fm.getExCode2(), MatchMode.START)); } if (fm.getOrganization() != null) { crit.add(Restrictions.eq("contact.organization", fm.getOrganization())); } if (StringUtils.isNotEmpty(fm.getDocCode())) { crit.add(Restrictions.ilike("code", fm.getDocCode(), MatchMode.START)); } if (fm.getDocumentType() != null && fm.getDocumentType() != DocumentType.Unknown) { crit.add(Restrictions.eq("this.documentType", fm.getDocumentType())); } if (fm.getProcessType() != null) { crit.add(Restrictions.eq("this.processType", fm.getProcessType())); } if (fm.getWorkBunch() != null) { crit.add(Restrictions.eq("this.workBunch", fm.getWorkBunch())); } if (fm.getContact() != null) { crit.add(Restrictions.eq("contact.id", fm.getContact().getId())); } /* crit.addOrder( Order.asc("date")); crit.addOrder( Order.asc("serial")); * */ crit.addOrder(Order.asc("contact.code")); crit.addOrder(Order.asc("amount.currency")); log.debug("Sonu : #0", crit); return crit; }
From source file:com.ut.tekir.report.ProductStatusReportBean.java
License:LGPL
public DetachedCriteria buildCriteria() { DetachedCriteria crit = DetachedCriteria.forClass(ProductTxn.class); crit.createAlias("product", "product"); crit.createAlias("warehouse", "warehouse"); //TODO: Unit Price'n farkl dvizlerde olma sorunu zle... ProjectionList pl = Projections.projectionList(); pl.add(Projections.groupProperty("product.code"), "prodcode") .add(Projections.groupProperty("product.name"), "prodname") //.add( Projections.groupProperty("action"), "action" ) //.add( Projections.groupProperty("amount.currency"), "currency" ) .add(Projections.groupProperty("product.group"), "group") .add(Projections.groupProperty("product.barcode1"), "barcode") .add(Projections.sum("quantity.value"), "quantity") .add(Projections.avg("unitPrice.value"), "unitPrice") .add(Projections.sqlGroupProjection("{alias}.UNIT as unit, " + //"sum( case {alias}.finance_action when 0 then {alias}.QUANTITY else 0 end ) as INQTY, " + //"sum( case {alias}.finance_action when 0 then 0 else {alias}.QUANTITY end ) as OUTQTY", "sum( case {alias}.trade_action when 0 then {alias}.QUANTITY else 0 end ) as INQTY, " + "sum( case {alias}.trade_action when 1 then {alias}.QUANTITY else 0 end ) as OUTQTY , " + "sum( case {alias}.trade_action when 2 then {alias}.QUANTITY else 0 end ) as BUYRETQTY, " + "sum( case {alias}.trade_action when 3 then {alias}.QUANTITY else 0 end ) as SELLRETQTY, " + "sum( case {alias}.trade_action when 6 then {alias}.QUANTITY else 0 end ) as RESQTY , " + "sum( case {alias}.trade_action when 7 then {alias}.QUANTITY else 0 end ) as DELQTY ", "UNIT", new String[] { "unit", "inqty", "outqty", "buyretqty", "sellretqty", "resqty", "delqty" }, new Type[] { Hibernate.STRING, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE })); if (warehouseBase) { //Depo krlml pl.add(Projections.groupProperty("warehouse.code"), "warecode") .add(Projections.groupProperty("warehouse.name"), "warename"); crit.addOrder(Order.asc("warehouse.code")); }/*from www. j ava 2 s.c om*/ crit.setProjection(pl); crit.add(Restrictions.eq("active", true)); if (code != null && code.length() > 0) { crit.add(Restrictions.ilike("product.code", code, MatchMode.START)); } if (name != null && name.length() > 0) { crit.add(Restrictions.ilike("product.name", name, MatchMode.START)); } if (productType != null) { if (getProductType() == 1) { crit.add(Restrictions.like("this.productType", ProductType.Product)); } else if (getProductType() == 2) { crit.add(Restrictions.like("this.productType", ProductType.Service)); } } if (barcode != null && barcode.length() > 0) { Criterion criteria1 = Restrictions.like("product.barcode1", barcode, MatchMode.START); Criterion criteria2 = Restrictions.like("product.barcode2", barcode, MatchMode.START); Criterion criteria3 = Restrictions.like("product.barcode3", barcode, MatchMode.START); crit.add(Restrictions.or(criteria1, Restrictions.or(criteria2, criteria3))); } if (group != null) { crit.add(Restrictions.eq("product.group", group)); } if (warehouse != null) { crit.add(Restrictions.eq("warehouse", warehouse)); } if (beginDate != null) { crit.add(Restrictions.ge("date", beginDate)); } if (endDate != null) { crit.add(Restrictions.le("date", endDate)); } if (category != null) { crit.add(Restrictions.eq("product.category", category)); } if (docCode != null && docCode.length() > 0) { crit.add(Restrictions.ilike("code", docCode, MatchMode.START)); } if (getDocumentType() != null && getDocumentType() != DocumentType.Unknown) { crit.add(Restrictions.eq("this.documentType", getDocumentType())); } if (getWorkBunch() != null) { crit.add(Restrictions.eq("this.workBunch", getWorkBunch())); } /* crit.addOrder( Order.asc("date")); crit.addOrder( Order.asc("serial")); * */ crit.addOrder(Order.asc("product.name")); log.debug("Sonu : #0", crit); return crit; }
From source file:com.ut.tekir.stock.ProductTxnReportBean.java
License:LGPL
public DetachedCriteria buildCriteriaForWarehouse() { DetachedCriteria crit = DetachedCriteria.forClass(ProductTxn.class); crit.createAlias("product", "product"); crit.createAlias("warehouse", "warehouse"); ProjectionList pl = Projections.projectionList(); pl.add(Projections.groupProperty("product.code"), "prodcode") .add(Projections.groupProperty("product.name"), "prodname") .add(Projections.groupProperty("product.group"), "group") .add(Projections.groupProperty("product.barcode1"), "barcode") .add(Projections.groupProperty("warehouse.code"), "warecode") .add(Projections.groupProperty("warehouse.name"), "warename") .add(Projections.sum("quantity.value"), "quantity") .add(Projections.avg("unitPrice.value"), "unitPrice") .add(Projections.sqlGroupProjection("{alias}.UNIT as unit, " + "sum( case {alias}.trade_action when 0 then {alias}.QUANTITY else 0 end ) as INQTY, " + "sum( case {alias}.trade_action when 1 then {alias}.QUANTITY else 0 end ) as OUTQTY , " + "sum( case {alias}.trade_action when 2 then {alias}.QUANTITY else 0 end ) as BUYRETQTY, " + "sum( case {alias}.trade_action when 3 then {alias}.QUANTITY else 0 end ) as SELLRETQTY, " + "sum( case {alias}.trade_action when 6 then {alias}.QUANTITY else 0 end ) as RESQTY , " + "sum( case {alias}.trade_action when 7 then {alias}.QUANTITY else 0 end ) as DELQTY ", "UNIT", new String[] { "unit", "inqty", "outqty", "buyretqty", "sellretqty", "resqty", "delqty" }, new Type[] { Hibernate.STRING, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE, Hibernate.DOUBLE })); crit.setProjection(pl);/*from w w w.j a v a 2 s . co m*/ crit.add(Restrictions.eq("active", true)); if (filterModel.getBarcode() != null && filterModel.getBarcode().length() > 0) { Criterion criteria1 = Restrictions.eq("product.barcode1", filterModel.getBarcode()); Criterion criteria2 = Restrictions.eq("product.barcode2", filterModel.getBarcode()); Criterion criteria3 = Restrictions.eq("product.barcode3", filterModel.getBarcode()); crit.add(Restrictions.or(criteria1, Restrictions.or(criteria2, criteria3))); } if (filterModel.getProduct() != null) { crit.add(Restrictions.eq("product", filterModel.getProduct())); } crit.addOrder(Order.asc("product.name")); return crit; }
From source file:de.sub.goobi.helper.ProjectHelper.java
License:Open Source License
/** * static to reduce load/*from ww w. jav a 2s. co m*/ * * @param project * object * @return a GoobiCollection of the following structure: GoobiCollection 1-n * representing the steps each step has the following properties @ * stepTitle, stepOrder, * stepCount,stepImageCount,totalProcessCount,totalImageCount which * can get extracted by the IGoobiCollection Interface using the * getItem(<name>) method standard workflow of the project * according to the definition that only steps shared by all * processes are returned. The workflow order is returned according * to the average order return by a grouping by step title consider * workflow structure to be a prototype, it would probably make * things easier, to either assemble the underlying construction in * separate classes or to create a new class with these properties */ @SuppressWarnings("unchecked") public static synchronized List<StepInformation> getProjectWorkFlowOverview(Project project) { Long totalNumberOfProc = 0l; Long totalNumberOfImages = 0l; Session session = Helper.getHibernateSession(); Criteria critTotals = session.createCriteria(Process.class, "proc"); critTotals.add(Restrictions.eq("proc.template", Boolean.FALSE)); critTotals.add(Restrictions.eq("proc.project", project)); ProjectionList proList = Projections.projectionList(); proList.add(Projections.count("proc.id")); proList.add(Projections.sum("proc.sortHelperImages")); critTotals.setProjection(proList); List<Object> list = critTotals.list(); for (Object obj : list) { Object[] row = (Object[]) obj; totalNumberOfProc = (Long) row[FieldList.totalProcessCount.fieldLocation]; totalNumberOfImages = (Long) row[FieldList.totalImageCount.fieldLocation]; ; } proList = null; list = null; Criteria critSteps = session.createCriteria(Task.class); critSteps.createCriteria("process", "proc"); critSteps.addOrder(Order.asc("ordering")); critSteps.add(Restrictions.eq("proc.template", Boolean.FALSE)); critSteps.add(Restrictions.eq("proc.project", project)); proList = Projections.projectionList(); proList.add(Projections.groupProperty(("title"))); proList.add(Projections.count("id")); proList.add(Projections.avg("ordering")); critSteps.setProjection(proList); // now we have to discriminate the hits where the max number of hits // doesn't reach numberOfProcs // and extract a workflow, which is the workflow common for all // processes according to its titel // the position will be calculated by the average of 'reihenfolge' of // steps list = critSteps.list(); String title; Double averageStepOrder; Long numberOfSteps; Long numberOfImages; List<StepInformation> workFlow = new ArrayList<>(); for (Object obj : list) { Object[] row = (Object[]) obj; title = (String) (row[FieldList.stepName.fieldLocation]); numberOfSteps = (Long) (row[FieldList.stepCount.fieldLocation]); averageStepOrder = (Double) (row[FieldList.stepOrder.fieldLocation]); // in this step we only take the steps which are present in each of // the workflows if (numberOfSteps.equals(totalNumberOfProc)) { StepInformation newStep = new StepInformation(title, averageStepOrder); newStep.setNumberOfTotalImages(totalNumberOfImages.intValue()); newStep.setNumberOfTotalSteps(totalNumberOfProc.intValue()); workFlow.add(newStep); } } Criteria critStepDone = session.createCriteria(Task.class, "step"); critStepDone.createCriteria("process", "proc"); critStepDone.add(Restrictions.eq("step.processingStatus", TaskStatus.DONE.getValue())); critStepDone.add(Restrictions.eq("proc.template", Boolean.FALSE)); critStepDone.add(Restrictions.eq("proc.project", project)); ProjectionList proCount = Projections.projectionList(); proCount.add(Projections.groupProperty(("step.title"))); proCount.add(Projections.count("proc.id")); proCount.add(Projections.sum("proc.sortHelperImages")); critStepDone.setProjection(proCount); list = critStepDone.list(); for (Object obj : list) { Object[] row = (Object[]) obj; title = (String) (row[FieldList.stepName.fieldLocation]); numberOfSteps = (Long) (row[FieldList.stepCount.fieldLocation]); numberOfImages = (Long) (row[FieldList.imageCount.fieldLocation]); // getting from the workflow collection the collection which // represents step <title> // we only created one for each step holding the counts of processes for (StepInformation currentStep : workFlow) { if (currentStep.getTitle().equals(title)) { currentStep.setNumberOfStepsDone(numberOfSteps.intValue()); currentStep.setNumberOfImagesDone(numberOfImages.intValue()); } } } Comparator<StepInformation> comp = new compareWorkflowSteps(); Collections.sort(workFlow, comp); return workFlow; }
From source file:edu.monash.merc.dao.DSVersionDAO.java
License:Open Source License
/** * {@inheritDoc}/*w w w . jav a2s . c o m*/ */ @SuppressWarnings("unchecked") public List<DBVersionBean> getLatestDBSVersionByChromosome(ChromType chromType) { Criteria dsvCriteria = this.session().createCriteria(this.persistClass); dsvCriteria.add(Restrictions.eq("chromosome", chromType.chm())); dsvCriteria.setProjection( Projections.projectionList().add(Projections.groupProperty("dbSource").as("dbSource")) .add(Projections.max("id").as("id")).add(Projections.max("createdTime").as("createdTime")) .add(Projections.max("versionNo").as("versionNo"))); dsvCriteria.addOrder(Order.asc("dbSource")); return dsvCriteria.setResultTransformer(Transformers.aliasToBean(DBVersionBean.class)).list(); }
From source file:edu.monash.merc.dao.TPBVersionDAO.java
License:Open Source License
/** * {@inheritDoc}// w w w . j a va 2 s . c o m */ @SuppressWarnings("unchecked") public List<MaxDsTPBVersion> getAllChromosomeTPBVersionByMaxCombinatedDs() { Criteria tpbVCriteria = this.session().createCriteria(this.persistClass); tpbVCriteria.setProjection( Projections.projectionList().add(Projections.groupProperty("chromosome").as("chromosome")) .add(Projections.max("id").as("id")).add(Projections.max("trackToken").as("trackToken")) .add(Projections.max("versionNo").as("versionNo"))); List<MaxDsTPBVersion> maxDsTPBVersions = tpbVCriteria .setResultTransformer(Transformers.aliasToBean(MaxDsTPBVersion.class)).list(); // System.out.println("======= max ds tpb versions size: " + maxDsTPBVersions.size()); // for(MaxDsTPBVersion maxDsTPBVersion : maxDsTPBVersions){ // System.out.println("========= > " +maxDsTPBVersion.getId() + " -- " + maxDsTPBVersion.getChromosome() + " -- " + maxDsTPBVersion.getTrackToken() + " -- " + maxDsTPBVersion.getVersionNo()); // } return maxDsTPBVersions; }
From source file:es.sm2.openppm.core.dao.ProcurementpaymentsDAO.java
License:Open Source License
/** * Get Procurement Budgets from Project/* w w w .ja v a 2s . c o m*/ * * @param proj * @param joins * @return */ public List<ProcurementBudget> consProcurementBudgetsByProject(Project proj, List<String> joins) { Criteria crit = getSession().createCriteria(getPersistentClass()); for (String join : joins) { crit.setFetchMode(join, FetchMode.JOIN); } crit.addOrder(Order.asc(Procurementpayments.SELLER)) .setProjection(Projections.projectionList().add(Projections.sum(Procurementpayments.PLANNEDPAYMENT)) .add(Projections.sum(Procurementpayments.ACTUALPAYMENT)).add(Projections.rowCount()) .add(Projections.groupProperty(Procurementpayments.SELLER))) .add(Restrictions.eq(Procurementpayments.PROJECT, proj)); List<ProcurementBudget> lista = new ArrayList<ProcurementBudget>(); List<String> purchase = null; for (int i = 0; i < crit.list().size(); i++) { ProcurementBudget budget = new ProcurementBudget(); Object[] row = (Object[]) crit.list().get(i); budget.setPlannedPayment((Double) row[0]); budget.setActualPayment((Double) row[1]); budget.setnPayments((Integer) row[2]); Seller seller = (Seller) row[3]; budget.setSeller(seller.getName()); purchase = consPruchaseOrder(seller, proj); String order = ""; if (purchase != null) { for (String s : purchase) { if (!order.equals("")) { order += ", "; } order += s; } } budget.setPurchaseOrder(order); lista.add(budget); } return lista; }
From source file:es.tekniker.framework.ktek.questionnaire.mng.db.QuestionnaireManagerDB.java
License:Open Source License
public Ktek_questionnaire[] getQuestionnaires4TypeMonitoringActivityPlanned(short typeMonitoringActivity, String codUser, String codtelecareprogram, short status) { Ktek_questionnaire[] arrayInstance = null; DAOFactory lDAOFactory = null;/* www . j av a2s . c o m*/ Ktek_questionnaireDAO instanceDAO = null; Ktek_questionnaireCriteria objKtek_questionnaireCriteria = null; long nowInMillis = 0, todayStartInMillis = 0, todayEndInMillis = 0; PersistentSession session = null; Ktek_userquestionnaire_planningCriteria objKtek_userquestionnaire_planningCriteria = null; try { int hours, minutes, seconds; nowInMillis = Utils.getCalendarGMT().getTimeInMillis(); hours = 0; minutes = 0; seconds = 0; todayStartInMillis = Utils.getTimeinMillis4TimeGMT(hours, minutes, seconds); hours = 23; minutes = 59; seconds = 59; todayEndInMillis = Utils.getTimeinMillis4TimeGMT(hours, minutes, seconds); session = es.tekniker.framework.ktek.questionnaire.KTEKPersistentManager.instance().getSession(); session.beginTransaction(); lDAOFactory = es.tekniker.framework.ktek.questionnaire.DAOFactory.getDAOFactory(); instanceDAO = lDAOFactory.getKtek_questionnaireDAO(); objKtek_questionnaireCriteria = new Ktek_questionnaireCriteria(); objKtek_questionnaireCriteria.typemonitoringactivity.eq(typeMonitoringActivity); objKtek_questionnaireCriteria.isdeleted.eq((short) 0); objKtek_questionnaireCriteria.datevalidfrom.lt(nowInMillis); objKtek_userquestionnaire_planningCriteria = objKtek_questionnaireCriteria .createKtek_userquestionnaire_planningCriteria(); objKtek_userquestionnaire_planningCriteria.coduser.eq(codUser); objKtek_userquestionnaire_planningCriteria.codtelecareprogram.eq(codtelecareprogram); objKtek_userquestionnaire_planningCriteria.statusquestionnaire.eq(status); objKtek_userquestionnaire_planningCriteria.plannedfrom.le(nowInMillis); objKtek_userquestionnaire_planningCriteria.plannedto.ge(nowInMillis); objKtek_questionnaireCriteria .setProjection(Projections.projectionList() .add(Projections.groupProperty("ktek_pk_idquestionnaire"), "ktek_pk_idquestionnaire")) .setResultTransformer(Transformers.aliasToBean(Ktek_questionnaire.class)); arrayInstance = instanceDAO.listKtek_questionnaireByCriteria(objKtek_questionnaireCriteria); log.error("nowInMillis " + nowInMillis); if (arrayInstance != null) log.debug( "getQuestionnaires4TypeMonitoringActivityPlanned instance is not null Before Filter unique values " + arrayInstance.length); else log.info( "getQuestionnaires4TypeMonitoringActivityPlanned instance is null for typeMonitoringActivity " + typeMonitoringActivity); if (arrayInstance.length > 0) { Integer[] arrayIds = new Integer[arrayInstance.length]; for (int i = 0; i < arrayInstance.length; i++) { arrayIds[i] = arrayInstance[i].getKtek_pk_idquestionnaire(); } objKtek_questionnaireCriteria = new Ktek_questionnaireCriteria(); objKtek_questionnaireCriteria.ktek_pk_idquestionnaire.in(arrayIds); arrayInstance = instanceDAO.listKtek_questionnaireByCriteria(objKtek_questionnaireCriteria); } session.close(); } catch (PersistentException e) { log.error("getQuestionnaires4TypeMonitoringActivityPlanned Exception " + e.getMessage()); e.printStackTrace(); try { if (session != null) session.close(); } catch (PersistentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return arrayInstance; }
From source file:fr.insalyon.creatis.vip.application.server.dao.hibernate.SimulationStatsData.java
License:Open Source License
@Override public List<String> getWorkflowsPerUser(List<String> workflowsId) throws WorkflowsDBDAOException { List<String> result = new ArrayList<String>(); try {// w w w. j a v a 2 s.c o m Session session = sessionFactory.openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Workflow.class); criteria.add(Restrictions.in("id", workflowsId)); ProjectionList p = Projections.projectionList(); p.add(Projections.groupProperty("username")); p.add(Projections.property("username")); p.add(Projections.alias(Projections.count("status"), "nbWfls")); //p.add(Projections.count("status")); criteria.setProjection(p); criteria.addOrder(Order.desc("nbWfls")); List l = criteria.list(); session.getTransaction().commit(); session.close(); Iterator it = l.iterator(); while (it.hasNext()) { Object ob[] = (Object[]) it.next(); if (ob[0] != null && ob[1] != null) { result.add(String.valueOf(ob[0]) + "##" + String.valueOf(ob[2])); } } return result; } catch (HibernateException ex) { throw new WorkflowsDBDAOException(ex); } }
From source file:fr.insalyon.creatis.vip.application.server.dao.hibernate.SimulationStatsData.java
License:Open Source License
@Override public List<String> getApplications(List<String> workflowsId) throws WorkflowsDBDAOException { List<String> result = new ArrayList<String>(); try {//from ww w . j ava 2s.c o m Session session = sessionFactory.openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Workflow.class); criteria.add(Restrictions.in("id", workflowsId)); ProjectionList p = Projections.projectionList(); p.add(Projections.groupProperty("application")); p.add(Projections.property("application")); p.add(Projections.alias(Projections.count("status"), "nbWfls")); criteria.setProjection(p); criteria.setProjection(p); criteria.addOrder(Order.desc("nbWfls")); List l = criteria.list(); session.getTransaction().commit(); session.close(); Iterator it = l.iterator(); while (it.hasNext()) { Object ob[] = (Object[]) it.next(); if (ob[0] != null && ob[1] != null) { result.add(String.valueOf(ob[0]) + "##" + String.valueOf(ob[2])); } } return result; } catch (HibernateException ex) { throw new WorkflowsDBDAOException(ex); } //System.out.println("getApplications, first result is " + result.get(0).toString()); }