List of usage examples for org.hibernate.criterion Projections distinct
public static Projection distinct(Projection projection)
From source file:org.jasig.ssp.dao.PersonDao.java
License:Apache License
public PagingWrapper<Person> getAllAssignedCoaches(SortingAndPaging sAndP) { DetachedCriteria coach_ids = DetachedCriteria.forClass(Person.class, "coach_ids"); final ProjectionList projections = Projections.projectionList(); projections.add(Projections.distinct(Projections.property("coach.id"))); coach_ids.setProjection(projections); coach_ids.add(Restrictions.isNotNull("coach")); Criteria criteria = createCriteria().add(Subqueries.propertiesIn(new String[] { "id" }, coach_ids)); if (sAndP != null && sAndP.isFilteredByStatus()) { sAndP.addStatusFilterToCriteria(criteria); }/*from w w w . j a v a 2 s .c o m*/ // item count Long totalRows = 0L; if ((sAndP != null) && sAndP.isPaged()) { totalRows = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult(); } criteria.setProjection(null); if (sAndP == null || !(sAndP.isSorted())) { criteria.addOrder(Order.asc("lastName")).addOrder(Order.asc("firstName")); } else { if (sAndP.isSorted()) { sAndP.addSortingToCriteria(criteria); } sAndP.addPagingToCriteria(criteria); } return new PagingWrapper<Person>(totalRows, criteria.list()); }
From source file:org.jasig.ssp.dao.PersonDao.java
License:Apache License
public PagingWrapper<CoachPersonLiteTO> getAllAssignedCoachesLite(SortingAndPaging sAndP, String homeDepartment) {//from w w w .j av a 2 s . co m DetachedCriteria coach_ids = DetachedCriteria.forClass(Person.class, "coach_ids"); final ProjectionList projections = Projections.projectionList(); projections.add(Projections.distinct(Projections.property("coach.id"))); coach_ids.setProjection(projections); coach_ids.add(Restrictions.isNotNull("coach")); Criteria criteria = createCriteria().add(Subqueries.propertiesIn(new String[] { "id" }, coach_ids)); if (sAndP != null && sAndP.isFilteredByStatus()) { sAndP.addStatusFilterToCriteria(criteria); } if (homeDepartment != null && homeDepartment.length() >= 0) { criteria.createAlias("staffDetails", "personStaffDetails"); criteria.add(Restrictions.eq("personStaffDetails.departmentName", homeDepartment)); } else { criteria.createAlias("staffDetails", "personStaffDetails", JoinType.LEFT_OUTER_JOIN); } // item count Long totalRows = 0L; if ((sAndP != null) && sAndP.isPaged()) { totalRows = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult(); } criteria.setProjection(null); criteria.setProjection(Projections.projectionList().add(Projections.property("id").as("person_id")) .add(Projections.property("firstName").as("person_firstName")) .add(Projections.property("lastName").as("person_lastName")) .add(Projections.property("primaryEmailAddress").as("person_primaryEmailAddress")) .add(Projections.property("workPhone").as("person_workPhone")) .add(Projections.property("personStaffDetails.departmentName").as("person_departmentName"))) .setResultTransformer( new NamespacedAliasToBeanResultTransformer(CoachPersonLiteTO.class, "person_")); return new PagingWrapper<CoachPersonLiteTO>(totalRows, criteria.list()); }
From source file:org.jasig.ssp.dao.PersonDao.java
License:Apache License
@SuppressWarnings("unchecked") public List<UUID> getStudentUUIDs(PersonSearchFormTO form) { Criteria criteria = setBasicSearchCriteria(createCriteria(), form); criteria.setProjection(Projections.distinct(Projections.property("id"))); return (List<UUID>) criteria.list(); }
From source file:org.jasig.ssp.dao.PersonStaffDetailsDao.java
License:Apache License
@SuppressWarnings("unchecked") public List<String> getAllHomeDepartments(ObjectStatus status) { Criteria criteria = createCriteria(); if (status != null) criteria.add(Restrictions.eq("objectStatus", status)); criteria.add(Restrictions.isNotNull("departmentName")); criteria.setProjection(/*from www. j av a 2 s . co m*/ Projections.projectionList().add(Projections.distinct(Projections.property("departmentName")))); return ((List<String>) criteria.list()); }
From source file:org.jboss.example.portlet.jasper.db.PhoneCallHibernateServiceImpl.java
License:Open Source License
@Override public List<String> getUniquePhoneNo() { Session s = getHibernateSession();//w ww . jav a 2 s . c o m Transaction t = s.beginTransaction(); try { // s.createQuery(" phoneNumber from @PhoneCallBean"); @SuppressWarnings("unchecked") List<String> phoneNumbers = (List<String>) s.createCriteria(PhoneCallBean.class) .setProjection(Projections.distinct(Projections.property("phoneNumber"))).list(); t.commit(); return phoneNumbers; } catch (Exception e) { log.error(e.getMessage()); e.printStackTrace(); t.rollback(); } return null; }
From source file:org.jspresso.framework.application.backend.action.persistence.hibernate.QueryEntitiesAction.java
License:Open Source License
/** * Performs actual Query. This method can be overridden by subclasses in order * to deal with non-Hibernate searches./*w w w. jav a 2s. c om*/ * * @param queryComponent * the query component. * @param context * the action context * @return the list of retrieved components. */ @Override @SuppressWarnings({ "unchecked", "ConstantConditions" }) public List<?> performQuery(final IQueryComponent queryComponent, final Map<String, Object> context) { Session hibernateSession = ((HibernateBackendController) getController(context)).getHibernateSession(); ICriteriaFactory critFactory = (ICriteriaFactory) queryComponent.get(CRITERIA_FACTORY); if (critFactory == null) { critFactory = getCriteriaFactory(context); queryComponent.put(CRITERIA_FACTORY, critFactory); } EnhancedDetachedCriteria criteria = critFactory.createCriteria(queryComponent, context); List<IEntity> entities; if (criteria == null) { entities = new ArrayList<>(); queryComponent.setRecordCount(0); } else { ICriteriaRefiner critRefiner = (ICriteriaRefiner) queryComponent.get(CRITERIA_REFINER); if (critRefiner == null) { critRefiner = getCriteriaRefiner(context); if (critRefiner != null) { queryComponent.put(CRITERIA_REFINER, critRefiner); } } if (critRefiner != null) { critRefiner.refineCriteria(criteria, queryComponent, context); } Integer totalCount = null; Integer pageSize = queryComponent.getPageSize(); Integer page = queryComponent.getPage(); ResultTransformer refinerResultTransformer = criteria.getResultTransformer(); List<Order> refinerOrders = criteria.getOrders(); if (refinerOrders != null) { criteria.removeAllOrders(); } if (queryComponent.isDistinctEnforced() || queryComponent.getQueryDescriptor().isTranslatable()) { criteria.setProjection(Projections.distinct(Projections.id())); EnhancedDetachedCriteria outerCriteria = EnhancedDetachedCriteria .forEntityName(queryComponent.getQueryContract().getName()); outerCriteria.add(Subqueries.propertyIn(IEntity.ID, criteria)); criteria = outerCriteria; } if (pageSize != null) { if (page == null) { page = 0; queryComponent.setPage(page); } if (queryComponent.getRecordCount() == null) { if (isUseCountForPagination()) { criteria.setProjection(Projections.rowCount()); totalCount = ((Number) criteria.getExecutableCriteria(hibernateSession).list().get(0)) .intValue(); } else { totalCount = IQueryComponent.UNKNOWN_COUNT; } } if (refinerOrders != null) { for (Order order : refinerOrders) { criteria.addOrder(order); } } critFactory.completeCriteriaWithOrdering(criteria, queryComponent, context); if (refinerResultTransformer != null) { criteria.setResultTransformer(refinerResultTransformer); } if (useInListForPagination) { criteria.setProjection(Projections.id()); List<Serializable> entityIds = criteria.getExecutableCriteria(hibernateSession) .setFirstResult(page * pageSize).setMaxResults(pageSize).list(); if (entityIds.isEmpty()) { entities = new ArrayList<>(); } else { criteria = EnhancedDetachedCriteria .forEntityName(queryComponent.getQueryContract().getName()); entities = criteria.add(createEntityIdsInCriterion(entityIds, 500)) .getExecutableCriteria(hibernateSession).list(); Map<Serializable, IEntity> entitiesById = new HashMap<>(); for (IEntity entity : entities) { entitiesById.put(entity.getId(), entity); } entities = new ArrayList<>(); for (Serializable id : entityIds) { IEntity entity = entitiesById.get(id); if (entity != null) { entities.add(entity); } } } } else { entities = criteria.getExecutableCriteria(hibernateSession).setFirstResult(page * pageSize) .setMaxResults(pageSize).list(); } } else { if (refinerOrders != null) { for (Order order : refinerOrders) { criteria.addOrder(order); } } critFactory.completeCriteriaWithOrdering(criteria, queryComponent, context); if (refinerResultTransformer != null) { criteria.setResultTransformer(refinerResultTransformer); } entities = criteria.getExecutableCriteria(hibernateSession).list(); totalCount = entities.size(); } if (totalCount != null) { queryComponent.setRecordCount(totalCount); } } List<String> prefetchProperties = queryComponent.getPrefetchProperties(); if (prefetchProperties != null && entities != null) { // Will load the prefetch properties in the same transaction in order to leverage // Hibernate batch fetching. IAccessorFactory accessorFactory = getAccessorFactory(context); for (String prefetchProperty : prefetchProperties) { for (IEntity entity : entities) { try { accessorFactory.createPropertyAccessor(prefetchProperty, queryComponent.getQueryContract()) .getValue(entity); } catch (Exception e) { LOG.warn("An unexpected exception occurred when pre-fetching property {}", prefetchProperty, e); } } } } return entities; }
From source file:org.LexGrid.LexBIG.caCore.dao.orm.translators.GridCQLToDetachedCriteria.java
License:Open Source License
private DetachedCriteria handleQueryOptions(DetachedCriteria criteria, QueryModifier modifiers) { if (modifiers == null) { return criteria; }//from w ww. j av a 2 s . c o m ProjectionList projectionList = Projections.projectionList(); String[] projectionProperties = modifiers.getAttributeNames(); if (projectionProperties != null) { for (String prop : projectionProperties) { projectionList.add(Projections.property(prop)); } } String distinctAttribute = modifiers.getDistinctAttribute(); if (distinctAttribute != null) { projectionList.add(Projections.distinct(Projections.property(distinctAttribute))); } boolean isCount = modifiers.isCountOnly(); if (isCount) { projectionList.add(Projections.rowCount()); } //Only add the Projection List if it was populated with something. if (projectionList.getLength() > 0) { criteria.setProjection(projectionList); } return criteria; }
From source file:org.linagora.linshare.core.repository.hibernate.AccountQuotaRepositoryImpl.java
License:Open Source License
@Override public List<String> findDomainUuidByBatchModificationDate(Date startDate) { DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass()); criteria.add(Restrictions.ge("batchModificationDate", startDate)); criteria.add(Restrictions.le("batchModificationDate", new Date())); criteria.createAlias("domain", "do"); criteria.setProjection(Projections.distinct(Projections.property("do.uuid"))); @SuppressWarnings("unchecked") List<String> listIdentifier = (List<String>) getHibernateTemplate().findByCriteria(criteria); return listIdentifier; }
From source file:org.linagora.linshare.core.repository.hibernate.OperationHistoryRepositoryImpl.java
License:Open Source License
@Override public List<AbstractDomain> findDomainBeforeDate(Date creationDate) { DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass()); criteria.add(Restrictions.lt("creationDate", creationDate)); criteria.setProjection(Projections.distinct(Projections.property("domain"))); @SuppressWarnings("unchecked") List<AbstractDomain> result = (List<AbstractDomain>) getHibernateTemplate().findByCriteria(criteria); return result; }
From source file:org.linagora.linshare.core.repository.hibernate.OperationHistoryRepositoryImpl.java
License:Open Source License
@Override public List<String> findUuidAccountBeforeDate(Date date, ContainerQuotaType containerQuotaType) { DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass()); criteria.add(Restrictions.eq("containerQuotaType", containerQuotaType)); criteria.add(Restrictions.le("creationDate", date)); criteria.createAlias("account", "ac"); criteria.setProjection(Projections.distinct(Projections.property("ac.lsUuid"))); @SuppressWarnings("unchecked") List<String> listlsUuid = (List<String>) getHibernateTemplate().findByCriteria(criteria); return listlsUuid; }