List of usage examples for org.hibernate.criterion Projections distinct
public static Projection distinct(Projection projection)
From source file:it.unitn.elisco.dao.CourseDAO.java
public List<String> findCourseNames(String name) { Session s = HibernateUtil.getSession(); Transaction tx = s.beginTransaction(); // Fetch courses: // - which name begins with the specified query (optional, otherwise return all courses) Criteria criteria = s.createCriteria(Course.class); if (name != null && !name.equals("")) { criteria.add(Restrictions.like("name", name, MatchMode.START)); }//from www. j a v a2s. com // Then return results as Strings, returning distinct names criteria.setProjection(Projections.distinct(Projections.property("name"))); List<String> res = criteria.list(); tx.commit(); s.close(); return res; }
From source file:it.unitn.elisco.dao.CourseDAO.java
public List<String> findCourseNamesByAdmin(Administrator admin, String name) { Session s = HibernateUtil.getSession(); Transaction tx = s.beginTransaction(); // Fetch courses: // - which are administrated by specified admin // - which name begins with the specified query (optional, otherwise return all courses) Criteria criteria = s.createCriteria(Course.class); criteria.createCriteria("admins").add(Restrictions.eq("email", admin.getEmail())); if (name != null && !name.equals("")) { criteria.add(Restrictions.like("name", name, MatchMode.START)); }//from w ww . j a v a 2 s . c o m // Then return results as Strings, returning distinct names criteria.setProjection(Projections.distinct(Projections.property("name"))); List<String> res = criteria.list(); tx.commit(); s.close(); return res; }
From source file:ke.co.mspace.nonsmppmanager.service.SMSOutServiceImpl.java
@Override public List<String> getUsernames() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.getTransaction().begin();// w ww . ja v a2 s . c o m Criteria criteria = session.createCriteria(SMSOut.class); criteria.setProjection(Projections.distinct(Projections.property("user"))); List<String> result = criteria.list(); session.getTransaction().commit(); return result; }
From source file:kltn.dao.ATMLocationDAO.java
public List<String> listBank() { Session session = HibernateUtil.getSessionFactory().openSession(); List<String> list = null; Transaction tx = null;// w w w. ja va 2s .c o m try { tx = session.beginTransaction(); Criteria cr = session.createCriteria(AtmLocation.class); cr.setProjection(Projections.distinct(Projections.property("bank"))); list = cr.list(); tx.commit(); } catch (HibernateException he) { if (tx != null && tx.isActive()) { tx.rollback(); } } finally { session.close(); } return list; }
From source file:kr.debop4j.data.hibernate.repository.impl.HibernateDao.java
License:Apache License
/** * Build projection criteria./* w w w. jav a 2 s. c om*/ * * @param projectClass the project class * @param criteria the criteria * @param projection the projection * @param distinctResult the distinct result * @return the criteria */ protected <TProject> Criteria buildProjectionCriteria(Class<TProject> projectClass, Criteria criteria, Projection projection, boolean distinctResult) { if (isTraceEnabled) log.trace( "Criteria? Projection? ?. projectClass=[{}], projection=[{}], distinctResult=[{}]", projectClass, projection, distinctResult); if (distinctResult) { criteria.setProjection(Projections.distinct(projection)); } else { criteria.setProjection(projection); } criteria.setResultTransformer(Transformers.aliasToBean(projectClass)); return criteria; }
From source file:kr.debop4j.data.hibernate.tools.EntityTool.java
License:Apache License
/** * Get ancestors id criteria.//from ww w .j a v a2s. c om * * @param entity the entity * @param session the session * @param entityClass the entity class * @return the detached criteria */ public static <T extends IHierarchyEntity<T> & IEntity<TId>, TId extends Serializable> DetachedCriteria getAncestorsIdCriteria( T entity, Session session, Class<T> entityClass) { return getAncestorsCriteria(entity, session, entityClass) .setProjection(Projections.distinct(Projections.id())); }
From source file:kr.debop4j.data.hibernate.tools.EntityTool.java
License:Apache License
/** * Get descendents id criteria./*from ww w.j a v a2 s . co m*/ * * @param entity the entity * @param session the session * @param entityClass the entity class * @return the detached criteria */ public static <T extends IHierarchyEntity<T> & IEntity<TId>, TId extends Serializable> DetachedCriteria getDescendentsIdCriteria( T entity, Session session, Class<T> entityClass) { return getDescendentsCriteria(entity, session, entityClass) .setProjection(Projections.distinct(Projections.id())); }
From source file:model.DAO.java
public List DistinctQuery(Object obj, String columnName) { Criteria crit = session.createCriteria(obj.getClass()); crit.setProjection(Projections.distinct(Projections.property(columnName))); return crit.list(); }
From source file:net.firejack.platform.api.registry.broker.ReadBaseBIReportDataBroker.java
License:Apache License
@Override protected ServiceResponse<BIReportData> perform(ServiceRequest<NamedValues> request) throws Exception { Long biReportUserId = (Long) request.getData().get("id"); String parentNodeValues = (String) request.getData().get("parentNodeValues"); String[] parentRowValues = WebUtils.deserializeJSON(parentNodeValues, String[].class); int depth = parentRowValues.length; ServiceResponse<BIReportData> response; ServiceResponse<BIReportUser> biReportUserResponse = OPFEngine.RegistryService .readBIReportUser(biReportUserId); if (biReportUserResponse.isSuccess()) { BIReportData biReport = new BIReportData(); BIReportUser biReportUser = biReportUserResponse.getItem(); List<BIReportUserField> biReportUserFields = biReportUser.getFields(); Map<Long, BIReportField> entityBIReportFieldMap = new HashMap<Long, BIReportField>(); for (BIReportField biReportField : biReportUser.getReport().getFields()) { if (biReportField.getField() == null) { entityBIReportFieldMap.put(biReportField.getEntity().getId(), biReportField); }//from w w w .ja v a 2 s. c o m } Integer columnIndex = 0; List<BIReportColumn> biReportColumns = new ArrayList<BIReportColumn>(); Map<BIReportField, BIReportLocation> groupedBIReportFields = new LinkedHashMap<BIReportField, BIReportLocation>(); Map<Integer, BIReportRow> verticalColumnsMapping = new HashMap<Integer, BIReportRow>(); List<BIReportUserField> verticalBIReportUserFields = getFieldsByLocation(biReportUserFields, BIReportLocation.VERTICAL); Entity previousEntity = null; for (int i = 0; i < verticalBIReportUserFields.size(); i++) { BIReportUserField biReportUserField = verticalBIReportUserFields.get(i); BIReportField biReportField = biReportUserField.getField(); Entity entity = biReportField.getEntity(); if (previousEntity == null || !previousEntity.getId().equals(entity.getId())) { String columnName = entity.getName(); BIReportField entityBIReportField = entityBIReportFieldMap.get(entity.getId()); if (entityBIReportField != null) { columnName = StringUtils.defaultIfEmpty(entityBIReportField.getDisplayName(), columnName); } BIReportColumn biReportColumn = new BIReportColumn(); biReportColumn.setName(columnName); biReportColumn.setType(BIReportLocation.VERTICAL); biReportColumn.setColumnIndex(columnIndex); biReportColumn.setExpanded(biReportUserField.isExpanded()); biReportColumn.setUnShift(i); biReportColumns.add(biReportColumn); columnIndex++; previousEntity = entity; } BIReportRow biReportRow = new BIReportRow(); biReportRow.setColumnIndex(biReportColumns.size() - 1); biReportRow.setExpanded(biReportUserField.isExpanded()); verticalColumnsMapping.put(i, biReportRow); groupedBIReportFields.put(biReportField, BIReportLocation.VERTICAL); } biReport.setCountOfLevels(verticalColumnsMapping.size()); List<BIReportUserField> horizontalBIReportUserFields = getFieldsByLocation(biReportUserFields, BIReportLocation.HORIZONTAL); Map<Entity, List<BIReportField>> entityBIReportFields = new LinkedHashMap<Entity, List<BIReportField>>(); for (BIReportUserField biReportUserField : horizontalBIReportUserFields) { BIReportField biReportField = biReportUserField.getField(); Entity entity = biReportField.getEntity(); List<BIReportField> biReportFields = entityBIReportFields.get(entity); if (biReportFields == null) { biReportFields = new ArrayList<BIReportField>(); entityBIReportFields.put(entity, biReportFields); } biReportFields.add(biReportField); groupedBIReportFields.put(biReportField, BIReportLocation.HORIZONTAL); } List<BIReportUserField> measureBIReportUserFields = getFieldsByLocation(biReportUserFields, BIReportLocation.MEASURE); for (BIReportUserField biReportUserField : measureBIReportUserFields) { BIReportField biReportField = biReportUserField.getField(); groupedBIReportFields.put(biReportField, BIReportLocation.MEASURE); } String biReportUserFilter = biReportUser.getFilter(); biReport.setFilter(biReportUserFilter); List<List<SearchQuery>> filterSearchQueries = WebUtils.deserializeJSON(biReportUserFilter, List.class, List.class, SearchQuery.class); BIReportUserField measureBIReportUserField = measureBIReportUserFields.get(0); BIReportField measureBIReportField = measureBIReportUserField.getField(); Entity factEntity = measureBIReportField.getEntity(); String factDomainClassName = FormattingUtils.classFormatting(factEntity.getName()); String factModelClassName = factEntity.getPath() + ".model." + factDomainClassName + "Model"; Class<?> factModelClass = Class.forName(factModelClassName); List<Object[]> globalList = null; for (Map.Entry<Entity, List<BIReportField>> entry : entityBIReportFields.entrySet()) { Entity entity = entry.getKey(); List<BIReportField> biReportFields = entry.getValue(); String domainClassName = FormattingUtils.classFormatting(entity.getName()); String modelClassName = entity.getPath() + ".model." + domainClassName + "Model"; String storeClassName = entity.getPath() + ".store.Basic" + domainClassName + "Store"; IAbstractStore store = OpenFlameSpringContext.getBean(storeClassName); List<List<SearchQuery>> columnSearchQueryList = new ArrayList<List<SearchQuery>>(); List<SortField> sortFields = new ArrayList<SortField>(); ProjectionList projectionList = Projections.projectionList(); for (BIReportField biReportField : biReportFields) { Field field = biReportField.getField(); String fieldName = FormattingUtils.fieldModelFormatting(field.getName()); projectionList.add(Projections.property(fieldName)); sortFields.add(new SortField(fieldName, SortOrder.ASC)); String fkDimFieldName = findDimFieldName(factModelClass, modelClassName); for (List<SearchQuery> searchQueries : filterSearchQueries) { List<SearchQuery> columnSearchQueries = new ArrayList<SearchQuery>(); for (SearchQuery searchQuery : searchQueries) { String searchField = searchQuery.getField(); String[] fieldNames = searchField.split("\\."); if (fieldNames.length == 2 && fieldNames[0].equals(fkDimFieldName)) { SearchQuery columnSearchQuery = new SearchQuery(fieldNames[1], searchQuery.getOperation(), searchQuery.getValue()); columnSearchQueries.add(columnSearchQuery); } } if (columnSearchQueries.isEmpty()) { SearchQuery alwaysTrueSearchQuery = new SearchQuery(); columnSearchQueries.add(alwaysTrueSearchQuery); } columnSearchQueryList.add(columnSearchQueries); } } Paging paging = new Paging(null, null, sortFields); List<Object[]> objectsList; if (biReportFields.size() > 1) { objectsList = store.advancedSearchWithProjection(columnSearchQueryList, Projections.distinct(projectionList), null, paging); } else { objectsList = new ArrayList<Object[]>(); List<Object> objectList = store.advancedSearchWithProjection(columnSearchQueryList, Projections.distinct(projectionList), null, paging); for (Object object : objectList) { objectsList.add(new Object[] { object }); } } if (globalList == null) { globalList = objectsList; } else { List<Object[]> mergedList = new ArrayList<Object[]>(); for (Object[] globalObjects : globalList) { for (Object[] objects : objectsList) { Object[] mergedObjects = ArrayUtils.addAll(globalObjects, objects); mergedList.add(mergedObjects); } } globalList = mergedList; } } List<BIReportField> measureBIReportFields = getFieldsByLocation(groupedBIReportFields, BIReportLocation.MEASURE); Map<ArrayKey, Integer> horizontalColumnMapping = generateHorizontalColumns(globalList, biReportColumns, measureBIReportFields, columnIndex); if (depth == 0) { biReport.setColumns(biReportColumns); } int countOfExpandedChildren = 1; int countOfVerticalColumns = verticalColumnsMapping.size(); for (int i = depth; i < countOfVerticalColumns; i++) { BIReportRow verticalBIReportRow = verticalColumnsMapping.get(i); if (verticalBIReportRow.isExpanded()) { countOfExpandedChildren++; } else { break; } } ProjectionList projectionList = Projections.projectionList(); List<SortField> sortFields = new ArrayList<SortField>(); Map<String, String> aliases = new HashMap<String, String>(); int positionOfLastExpandedColumns = depth + countOfExpandedChildren - 1; List<SearchQuery> childrenFilterSearchQueries = new ArrayList<SearchQuery>(); List<BIReportField> verticalBIReportFields = getFieldsByLocation(groupedBIReportFields, new BIReportLocation[] { BIReportLocation.VERTICAL }); for (int i = 0; i < verticalBIReportFields.size(); i++) { BIReportField biReportField = verticalBIReportFields.get(i); Entity dimEntity = biReportField.getEntity(); String dimDomainClassName = FormattingUtils.classFormatting(dimEntity.getName()); String dimModelClassName = dimEntity.getPath() + ".model." + dimDomainClassName + "Model"; String fkDimFieldName = findDimFieldName(factModelClass, dimModelClassName); aliases.put(fkDimFieldName, fkDimFieldName); Field field = biReportField.getField(); String fieldName = FormattingUtils.fieldModelFormatting(field.getName()); String aliasedFieldName = fkDimFieldName + "." + fieldName; projectionList.add(Projections.groupProperty(aliasedFieldName)); sortFields.add(new SortField(aliasedFieldName, SortOrder.ASC)); if (positionOfLastExpandedColumns >= i + 1) { if (depth >= i + 1) { SearchQuery searchQuery = new SearchQuery(); searchQuery.setField(aliasedFieldName); searchQuery.setOperation(QueryOperation.EQUALS); searchQuery.setValue(parentRowValues[i]); childrenFilterSearchQueries.add(searchQuery); } } else { break; } } if (filterSearchQueries.isEmpty()) { filterSearchQueries.add(childrenFilterSearchQueries); } else { for (List<SearchQuery> searchQueries : filterSearchQueries) { for (SearchQuery childrenFilterSearchQuery : childrenFilterSearchQueries) { searchQueries.add(childrenFilterSearchQuery); } } } List<BIReportField> horizontalBIReportFields = getFieldsByLocation(groupedBIReportFields, new BIReportLocation[] { BIReportLocation.HORIZONTAL }); for (BIReportField biReportField : horizontalBIReportFields) { Entity dimEntity = biReportField.getEntity(); String dimDomainClassName = FormattingUtils.classFormatting(dimEntity.getName()); String dimModelClassName = dimEntity.getPath() + ".model." + dimDomainClassName + "Model"; String fkDimFieldName = findDimFieldName(factModelClass, dimModelClassName); aliases.put(fkDimFieldName, fkDimFieldName); Field field = biReportField.getField(); String fieldName = FormattingUtils.fieldModelFormatting(field.getName()); String aliasedFieldName = fkDimFieldName + "." + fieldName; projectionList.add(Projections.groupProperty(aliasedFieldName)); sortFields.add(new SortField(aliasedFieldName, SortOrder.ASC)); } for (BIReportField biReportField : measureBIReportFields) { Field field = biReportField.getField(); String fieldName = FormattingUtils.fieldModelFormatting(field.getName()); projectionList.add(Projections.count(fieldName)); } String storeClassName = factEntity.getPath() + ".store.Basic" + factDomainClassName + "Store"; IAbstractStore store = OpenFlameSpringContext.getBean(storeClassName); List<Object[]> dataList = store.advancedSearchWithProjection(filterSearchQueries, Projections.distinct(projectionList), aliases, new Paging(null, null, sortFields)); int countOfHorizontalColumns = horizontalBIReportUserFields.size(); int countOfMeasureColumns = measureBIReportUserFields.size(); List<BIReportRow> biReportRows = generateRows(dataList, verticalColumnsMapping, horizontalColumnMapping, countOfVerticalColumns, countOfHorizontalColumns, countOfMeasureColumns, depth, countOfExpandedChildren); biReport.setRows(biReportRows); response = new ServiceResponse<BIReportData>(biReport, "BI Report data", true); } else { response = new ServiceResponse<BIReportData>( "Could not find user configuration of BIReport by ID: " + biReportUserId, false); } return response; }
From source file:net.longfalcon.newsj.persistence.hibernate.PartDAOImpl.java
License:Open Source License
/** * findDistinctMessageIdSizeAndPartNumberByBinaryId * @param binaryId/* w ww. j a va2 s . co m*/ * @return list of {String,Long,Integer} */ @Override @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) public List<Object[]> findDistinctMessageIdSizeAndPartNumberByBinaryId(long binaryId) { Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Part.class); criteria.add(Restrictions.eq("binaryId", binaryId)); criteria.setProjection( Projections.projectionList().add(Projections.distinct(Projections.property("messageId"))) .add(Projections.property("size")).add(Projections.property("partNumber"))); criteria.addOrder(Order.desc("partNumber")); return criteria.list(); }