Example usage for org.hibernate.criterion DetachedCriteria setProjection

List of usage examples for org.hibernate.criterion DetachedCriteria setProjection

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria setProjection.

Prototype

public DetachedCriteria setProjection(Projection projection) 

Source Link

Document

Set the projection to use.

Usage

From source file:gr.abiss.calipso.hibernate.HibernateDao.java

License:Open Source License

@Override
public List<PageInforamaDocument> findPageInforamaDocumentMatching(
        PageInforamaDocumentSearch pageInforamaDocumentSearch) {
    DetachedCriteria criteria = pageInforamaDocumentSearch.getDetachedCriteria();
    List<PageInforamaDocument> list = getHibernateTemplate().findByCriteria(criteria,
            pageInforamaDocumentSearch.getPageBegin() - 1, pageInforamaDocumentSearch.getPageSize());
    criteria = pageInforamaDocumentSearch.getDetachedCriteriaForCount();
    criteria.setProjection(Projections.rowCount());
    Long count = (Long) getHibernateTemplate().findByCriteria(criteria).get(0);
    pageInforamaDocumentSearch.setResultCount(count);

    return list;/*from   w  w  w  . j  a va 2s  .  com*/
}

From source file:gr.abiss.calipso.hibernate.HibernateDao.java

License:Open Source License

@Override
public List<InforamaDocumentParameter> findInforamaDocumentParameterMatching(
        InforamaDocumentParameterSearch inforamaDocumentParameterSearch) {
    DetachedCriteria criteria = inforamaDocumentParameterSearch.getDetachedCriteria();
    List<InforamaDocumentParameter> list = getHibernateTemplate().findByCriteria(criteria,
            inforamaDocumentParameterSearch.getPageBegin() - 1, inforamaDocumentParameterSearch.getPageSize());
    criteria = inforamaDocumentParameterSearch.getDetachedCriteriaForCount();
    criteria.setProjection(Projections.rowCount());
    Long count = (Long) getHibernateTemplate().findByCriteria(criteria).get(0);
    inforamaDocumentParameterSearch.setResultCount(count);

    return list;//  w  ww . j a  v  a 2s .  co  m
}

From source file:id.web.faisalabdillah.dao.AbstractDao.java

License:Open Source License

protected int getResultSize(DetachedCriteria c) {
    c.setProjection(Projections.rowCount());
    return ((Long) getHibernateTemplate().findByCriteria(c, 0, 0).get(0)).intValue();
}

From source file:info.jtrac.hibernate.HibernateJtracDao.java

License:Apache License

public List<Item> findItems(ItemSearch itemSearch) {
    int pageSize = itemSearch.getPageSize();
    // TODO: if we are ordering by a custom column, we must load the whole
    // list to do an in-memory sort. we need to find a better way
    Field.Name sortFieldName = Field.isValidName(itemSearch.getSortFieldName())
            ? Field.convertToName(itemSearch.getSortFieldName())
            : null;/*w  ww . j  a  v  a  2  s  .  c o m*/
    // only trigger the in-memory sort for drop-down fields and when querying within a space
    // UI currently does not allow you to sort by custom field when querying across spaces, but check again
    boolean doInMemorySort = sortFieldName != null && sortFieldName.isDropDownType()
            && itemSearch.getSpace() != null;
    if (pageSize == -1 || doInMemorySort) {
        List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria());
        if (!list.isEmpty() && doInMemorySort) {
            doInMemorySort(list, itemSearch);
        }
        itemSearch.setResultCount(list.size());
        if (pageSize != -1) {
            // order-by was requested on custom field, so we loaded all results, but only need one page
            int start = pageSize * itemSearch.getCurrentPage();
            int end = Math.min(start + itemSearch.getPageSize(), list.size());
            return list.subList(start, end);
        }
        return list;
    } else {
        // pagination
        if (itemSearch.isBatchMode()) {
            getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) {
                    session.clear();
                    return null;
                }
            });
        }
        int firstResult = pageSize * itemSearch.getCurrentPage();
        List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria(), firstResult,
                pageSize);
        if (!itemSearch.isBatchMode()) {
            DetachedCriteria criteria = itemSearch.getCriteriaForCount();
            criteria.setProjection(Projections.rowCount());
            Integer count = (Integer) getHibernateTemplate().findByCriteria(criteria).get(0);
            itemSearch.setResultCount(count);
        }
        return list;
    }
}

From source file:info.jtrac.repository.HibernateJtracDao.java

License:Apache License

@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<Item> findItems(ItemSearch itemSearch) {
    int pageSize = itemSearch.getPageSize();
    // TODO: if we are ordering by a custom column, we must load the whole
    // list to do an in-memory sort. we need to find a better way
    Field.Name sortFieldName = Field.isValidName(itemSearch.getSortFieldName())
            ? Field.convertToName(itemSearch.getSortFieldName())
            : null;/* w  w  w  .ja v  a  2 s.  com*/
    // only trigger the in-memory sort for drop-down fields and when querying within a space
    // UI currently does not allow you to sort by custom field when querying across spaces, but check again
    boolean doInMemorySort = sortFieldName != null && sortFieldName.isDropDownType()
            && itemSearch.getSpace() != null;
    DetachedCriteria criteria = getCriteria(itemSearch);
    if (pageSize == -1 || doInMemorySort) {
        @SuppressWarnings("unchecked")
        List<Item> list = criteria.getExecutableCriteria(getSession()).list();
        if (!list.isEmpty() && doInMemorySort) {
            doInMemorySort(list, itemSearch);
        }
        itemSearch.setResultCount(list.size());
        if (pageSize != -1) {
            // order-by was requested on custom field, so we loaded all results, but only need one page
            int start = pageSize * itemSearch.getCurrentPage();
            int end = Math.min(start + itemSearch.getPageSize(), list.size());
            return list.subList(start, end);
        }
        return list;
    } else {
        // pagination
        if (itemSearch.isBatchMode()) {
            entityManager.clear();
        }
        int firstResult = pageSize * itemSearch.getCurrentPage();
        @SuppressWarnings("unchecked")
        List<Item> list = criteria.getExecutableCriteria(getSession()).setFirstResult(firstResult)
                .setMaxResults(pageSize).list();
        if (!itemSearch.isBatchMode()) {
            criteria = getCriteriaForCount(itemSearch).criteria;
            criteria.setProjection(Projections.rowCount());
            Long count = (Long) criteria.getExecutableCriteria(getSession()).list().get(0);
            itemSearch.setResultCount(count);
        }
        return list;
    }
}

From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java

License:Apache License

@Test
@Transactional(readOnly = true)//from   w  w  w .jav  a2 s . com
public void subqueriesTest() {

    DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class);
    memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department"))
            .add(Projections.rowCount(), "count")).addOrder(Order.desc("count"));

    Object[] members = (Object[]) memberSizeDc.getExecutableCriteria(hibernateDao.getSession()).setMaxResults(1)
            .uniqueResult();

    if (members != null) {
        Long departmentId = (Long) members[0];
        DetachedCriteria dc = DetachedCriteria.forClass(Department.class);
        dc.add(Restrictions.eq("id", departmentId));
        dc.getExecutableCriteria(UnitOfWorks.getCurrentSession()).list();
    }
}

From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java

License:Apache License

@Test
@Transactional(readOnly = true)/*from   w  w w.  j  a  v  a2s  .  c  o  m*/
public void subqueriesTest2() {
    DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class);
    memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department"))
            .add(Projections.rowCount(), "count"));

    DetachedCriteria dc = DetachedCriteria.forClass(Department.class);

    dc.add(Subqueries.propertyEq("id", memberSizeDc));

}

From source file:main.java.info.jtrac.hibernate.HibernateJtracDao.java

License:Apache License

public List<Item> findItems(ItemSearch itemSearch) {
    int pageSize = itemSearch.getPageSize();
    if (pageSize == -1) {
        List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria());
        itemSearch.setResultCount(list.size());
        return list;
    } else {// w ww.j  ava2  s . co m
        // pagination
        int firstResult = pageSize * itemSearch.getCurrentPage();
        List<Item> list = getHibernateTemplate().findByCriteria(itemSearch.getCriteria(), firstResult,
                pageSize);
        DetachedCriteria criteria = itemSearch.getCriteriaForCount();
        criteria.setProjection(Projections.rowCount());
        Integer count = (Integer) getHibernateTemplate().findByCriteria(criteria).get(0);
        itemSearch.setResultCount(count);
        return list;
    }
}

From source file:mitm.common.security.ca.hibernate.CertificateRequestDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public CertificateRequestEntity getNextRequest(Date notAfter) {
    DetachedCriteria minDateCriteria = createDetachedCriteria(CertificateRequestEntity.ENTITY_NAME);

    /*/* ww w .j  a  v  a 2  s  . co m*/
     * Create a criteria to get the oldest nextUpdate
     */
    minDateCriteria.setProjection(Projections.min(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME));

    Criteria criteria = createCriteria(CertificateRequestEntity.ENTITY_NAME);

    criteria.add(Restrictions.or(
            Property.forName(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME).eq(minDateCriteria),
            Restrictions.isNull(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME)));

    /*
     * We only want entries that are older than notAfter or have no nextUpdate yet. The reason for notAfter is
     * that we do not want to try too fast in succession. By setting notAfter to the current date we will only 
     * get entries for which the update is long overdue.
     */
    criteria.add(Restrictions.or(Restrictions.le(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME, notAfter),
            Restrictions.isNull(CertificateRequestEntity.NEXT_UPDATE_COLUMN_NAME)));

    addSortOnCreationDate(criteria);

    CertificateRequestEntity next = null;

    List<CertificateRequestEntity> found = criteria.list();

    if (found != null && found.size() > 0) {
        next = found.get(0);
    }

    return next;
}

From source file:mitm.common.security.certstore.dao.X509CertStoreDAOHibernate.java

License:Open Source License

@Override
public X509CertStoreEntryHibernate getLatest() {
    DetachedCriteria maxDateCriteria = createDetachedCriteria(entityName);

    maxDateCriteria.setProjection(Projections.max(getColumnName(Field.CREATION_DATE)));

    maxDateCriteria.add(Restrictions.eq(getColumnName(Field.STORE_NAME), storeName));

    Criteria criteria = createCriteria(entityName);

    criteria.add(Property.forName(getColumnName(Field.CREATION_DATE)).eq(maxDateCriteria));

    criteria.add(Restrictions.eq(getColumnName(Field.STORE_NAME), storeName));

    return (X509CertStoreEntryHibernate) criteria.uniqueResult();
}