Example usage for org.hibernate.criterion Projections id

List of usage examples for org.hibernate.criterion Projections id

Introduction

In this page you can find the example usage for org.hibernate.criterion Projections id.

Prototype

public static IdentifierProjection id() 

Source Link

Document

An identifier value projection.

Usage

From source file:org.jpos.qi.EntityContainer.java

License:Open Source License

@Override
public List<?> getItemIds(int startIndex, int numberOfItems) {
    try {//from  w  w  w .ja v  a  2s  . c  o  m
        return (List<?>) DB.exec((db) -> {
            Criteria crit = getCriteria(db);
            crit.setProjection(Projections.id());
            crit.setFirstResult(startIndex);
            crit.setFetchSize(numberOfItems);
            return crit.list();
        });
    } catch (Exception e) {
        QI.getQI().getLog().error(e);
        return null;
    }

}

From source file:org.jpos.qi.EntityContainer.java

License:Open Source License

public Object nextItemId(Object itemId) {
    if (isLastId(itemId))
        return null;
    int currentIndex = indexOfId(itemId);
    int firstIndex = normalOrder ? currentIndex + 1 : size() - currentIndex - 1;
    List<T> buffer = getRowBuffer();
    try {//from w  w w.  j av a  2 s . com
        int curBufIndex = buffer.indexOf(itemId);
        if (curBufIndex != -1) {
            T object = buffer.get(curBufIndex + 1);
            return getPojoId(object);
        }
    } catch (Exception e) {
        // not in buffer
    }
    List<T> newBuffer = null;
    try {
        newBuffer = (List<T>) DB.exec((db) -> {
            Criteria crit = getCriteria(db).setFirstResult(firstIndex).setMaxResults(ROW_BUF_SIZE)
                    .setCacheable(true);
            crit.setProjection(Projections.id());
            return crit.list();
        });
    } catch (Exception e) {
        QI.getQI().getLog().error(e);
    }
    if (newBuffer.size() > 0) {
        setRowBuffer(newBuffer, firstIndex);
        return newBuffer.get(0);
    }
    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./*from ww w.  jav  a 2 s.co m*/
 *
 * @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.libreplan.business.common.daos.GenericDAOHibernate.java

License:Open Source License

public boolean exists(final PK id) {

    return getSession().createCriteria(entityClass).add(Restrictions.idEq(id)).setProjection(Projections.id())
            .uniqueResult() != null;//from  ww  w . jav a  2 s. com

}

From source file:org.linagora.linshare.core.repository.hibernate.ThreadRepositoryImpl.java

License:Open Source License

@Override
public List<Thread> searchAmongMembers(User actor, String pattern) {
    DetachedCriteria det = DetachedCriteria.forClass(Thread.class);
    det.add(Restrictions.eq("destroyed", false));

    Disjunction or = Restrictions.disjunction();

    det.createAlias("myMembers", "member2");
    det.createAlias("member2.user", "u");
    or.add(Restrictions.ilike("u.firstName", pattern, ANYWHERE));
    or.add(Restrictions.ilike("u.lastName", pattern, ANYWHERE));
    det.add(or);//from w  w  w  .j a  va2  s . c  o  m

    DetachedCriteria sub = DetachedCriteria.forClass(Thread.class);
    sub.createAlias("myMembers", "member");
    if (!actor.isSuperAdmin())
        sub.add(Restrictions.eq("member.user", actor));
    sub.setProjection(Projections.id());

    det.add(Subqueries.propertyIn("id", sub));
    return findByCriteria(det);
}

From source file:org.motechproject.server.model.db.hibernate.HibernateMotechDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Obs> getActivePregnanciesDueDateObs(Facility facility, Date fromDueDate, Date toDueDate,
        Concept pregnancyDueDateConcept, Concept pregnancyConcept, Concept pregnancyStatusConcept,
        Integer maxResults) {//from   www  .j  a v  a 2 s.c o  m
    Session session = sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(Obs.class, "o");

    criteria.add(Restrictions.eq("o.voided", false));
    criteria.add(Restrictions.eq("o.concept", pregnancyDueDateConcept));

    if (fromDueDate != null) {
        criteria.add(Restrictions.ge("o.valueDatetime", fromDueDate));
    }
    if (toDueDate != null) {
        criteria.add(Restrictions.le("o.valueDatetime", toDueDate));
    }

    criteria.createAlias("o.person", "p");
    criteria.add(Restrictions.eq("p.personVoided", false));

    criteria.createAlias("o.obsGroup", "g");
    criteria.add(Restrictions.eq("g.concept", pregnancyConcept));
    criteria.add(Restrictions.eq("g.voided", false));

    DetachedCriteria pregnancyActiveCriteria = DetachedCriteria.forClass(Obs.class, "s")
            .setProjection(Projections.id()).add(Restrictions.eq("s.voided", false))
            .add(Restrictions.eq("s.concept", pregnancyStatusConcept))
            .add(Restrictions.eq("s.valueNumeric", 1.0))
            .add(Restrictions.eqProperty("s.obsGroup.obsId", "g.obsId"))
            .add(Restrictions.eqProperty("s.person.personId", "p.personId"));

    criteria.add(Subqueries.exists(pregnancyActiveCriteria));

    DetachedCriteria pregnancyInactiveCriteria = DetachedCriteria.forClass(Obs.class, "e")
            .setProjection(Projections.id()).add(Restrictions.eq("e.voided", false))
            .add(Restrictions.eq("e.concept", pregnancyStatusConcept))
            .add(Restrictions.eq("e.valueNumeric", 0.0))
            .add(Restrictions.eqProperty("e.obsGroup.obsId", "g.obsId"))
            .add(Restrictions.eqProperty("e.person.personId", "p.personId"));

    criteria.add(Subqueries.notExists(pregnancyInactiveCriteria));

    if (facility != null) {
        criteria.add(Restrictions.sqlRestriction(
                "exists (select f.id from motechmodule_facility f "
                        + "inner join motechmodule_facility_patient fp " + "on f.id = fp.facility_id "
                        + "where f.facility_id = ? and fp.patient_id = {alias}.person_id)",
                facility.getFacilityId(), Hibernate.INTEGER));
    }

    criteria.addOrder(Order.asc("o.valueDatetime"));
    if (maxResults != null) {
        criteria.setMaxResults(maxResults);
    }
    return criteria.list();
}

From source file:org.motechproject.server.model.db.hibernate.HibernateMotechDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Patient> getPatients(String firstName, String lastName, String preferredName, Date birthDate,
        Integer facilityId, String phoneNumber, PersonAttributeType phoneNumberAttrType, String nhisNumber,
        PersonAttributeType nhisAttrType, Integer communityId, String patientId,
        PatientIdentifierType patientIdType, Integer maxResults) {

    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Patient.class, "p");

    criteria.createAlias("p.names", "name");
    criteria.createAlias("p.identifiers", "id");

    criteria.add(Restrictions.eq("p.voided", false));
    criteria.add(Restrictions.eq("name.voided", false));
    criteria.add(Restrictions.eq("id.voided", false));

    if (patientId != null && patientIdType != null) {
        criteria.add(Restrictions.and(Restrictions.eq("id.identifierType", patientIdType),
                Restrictions.eq("id.identifier", patientId)));
    }//  w  w w . j  ava 2s  . com

    Criterion firstNameCriterion = Restrictions.like("name.givenName", firstName, MatchMode.ANYWHERE);
    Criterion preferredNameCriterion = Restrictions.like("name.givenName", preferredName, MatchMode.ANYWHERE);
    if (firstName != null && preferredName != null) {
        criteria.add(Restrictions.or(firstNameCriterion, preferredNameCriterion));
    } else if (firstName != null) {
        criteria.add(firstNameCriterion);
    } else if (preferredName != null) {
        criteria.add(preferredNameCriterion);
    }

    if (lastName != null) {
        criteria.add(Restrictions.like("name.familyName", lastName, MatchMode.ANYWHERE));
    }

    if (birthDate != null) {
        criteria.add(Restrictions.eq("p.birthdate", birthDate));
    }

    if (facilityId != null) {
        criteria.add(Restrictions.sqlRestriction(
                "exists (select f.id from motechmodule_facility f "
                        + "inner join motechmodule_facility_patient fp " + "on f.id = fp.facility_id "
                        + "where f.facility_id = ? and fp.patient_id = {alias}.patient_id)",
                facilityId, Hibernate.INTEGER));
    }

    if (communityId != null) {
        criteria.add(Restrictions.sqlRestriction(
                "exists (select c.id from motechmodule_community c "
                        + "inner join motechmodule_community_patient cp " + "on c.id = cp.community_id "
                        + "where c.community_id = ? and cp.patient_id = {alias}.patient_id)",
                communityId, Hibernate.INTEGER));
    }

    if (nhisNumber != null && nhisAttrType != null) {
        DetachedCriteria nhisCriteria = DetachedCriteria.forClass(PersonAttribute.class, "nattr")
                .setProjection(Projections.id()).add(Restrictions.eq("nattr.voided", false))
                .add(Restrictions.eqProperty("nattr.person.personId", "p.patientId"))
                .add(Restrictions.and(Restrictions.eq("nattr.attributeType", nhisAttrType),
                        Restrictions.eq("nattr.value", nhisNumber)));

        criteria.add(Subqueries.exists(nhisCriteria));
    }

    if (phoneNumber != null && phoneNumberAttrType != null) {
        DetachedCriteria phoneCriteria = DetachedCriteria.forClass(PersonAttribute.class, "pattr")
                .setProjection(Projections.id()).add(Restrictions.eq("pattr.voided", false))
                .add(Restrictions.eqProperty("pattr.person.personId", "p.patientId"))
                .add(Restrictions.and(Restrictions.eq("pattr.attributeType", phoneNumberAttrType),
                        Restrictions.eq("pattr.value", phoneNumber)));

        criteria.add(Subqueries.exists(phoneCriteria));
    }

    criteria.addOrder(Order.asc("name.givenName"));
    criteria.addOrder(Order.asc("name.familyName"));
    criteria.addOrder(Order.asc("p.birthdate"));

    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    if (maxResults != null) {
        criteria.setMaxResults(maxResults);
    }
    return criteria.list();
}

From source file:org.mzd.shap.domain.dao.FeatureDaoSpringHibernate.java

License:Open Source License

public List<Feature> findByProjectAndType(final Project project, final FeatureType type,
        final boolean minimal) {
    return getHibernateTemplate().execute(new HibernateCallback<List<Feature>>() {
        @SuppressWarnings("unchecked")
        public List<Feature> doInHibernate(Session session) throws HibernateException, SQLException {
            if (minimal) {
                return session.createCriteria(getPersistentClass())
                        .setProjection(Projections.projectionList().add(Projections.id(), "id")
                                .add(Projections.property("version"), "version"))
                        .add(Restrictions.eq("type", type)).createCriteria("sequence").createCriteria("sample")
                        .add(Restrictions.eq("project", project))
                        .setResultTransformer(Transformers.aliasToBean(getPersistentClass())).list();

            } else {
                return session.createCriteria(getPersistentClass()).add(Restrictions.eq("type", type))
                        .createCriteria("sequence").createCriteria("sample")
                        .add(Restrictions.eq("project", project)).list();
            }/*from   ww  w.j  ava 2 s .  c  om*/
        }
    });
}

From source file:org.mzd.shap.domain.dao.FeatureDaoSpringHibernate.java

License:Open Source License

public List<Feature> findBySampleAndType(final Sample sample, final FeatureType type, final boolean minimal) {
    return getHibernateTemplate().execute(new HibernateCallback<List<Feature>>() {
        @SuppressWarnings("unchecked")
        public List<Feature> doInHibernate(Session session) throws HibernateException, SQLException {
            if (minimal) {
                return session.createCriteria(getPersistentClass())
                        .setProjection(Projections.projectionList().add(Projections.id(), "id")
                                .add(Projections.property("version"), "version"))
                        .add(Restrictions.eq("type", type)).createCriteria("sequence")
                        .add(Restrictions.eq("sample", sample))
                        .setResultTransformer(Transformers.aliasToBean(getPersistentClass())).list();
            } else {
                return session.createCriteria(getPersistentClass()).add(Restrictions.eq("type", type))
                        .createCriteria("sequence").add(Restrictions.eq("sample", sample)).list();
            }/* w w w .ja v  a  2s. co m*/
        }
    });
}

From source file:org.mzd.shap.domain.dao.FeatureDaoSpringHibernate.java

License:Open Source License

public List<Feature> findBySequenceAndType(final Sequence sequence, final FeatureType type,
        final boolean minimal) {
    return getHibernateTemplate().execute(new HibernateCallback<List<Feature>>() {
        @SuppressWarnings("unchecked")
        public List<Feature> doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria crit = session.createCriteria(getPersistentClass())
                    .add(Restrictions.eq("sequence", sequence)).add(Restrictions.eq("type", type));
            if (minimal) {
                crit.setProjection(Projections.projectionList().add(Projections.id(), "id")
                        .add(Projections.property("version"), "version"))
                        .setResultTransformer(Transformers.aliasToBean(getPersistentClass()));
            }//from  w ww  . j a v  a2s . c o m

            return crit.list();
        }
    });
}