Example usage for org.hibernate.criterion DetachedCriteria getExecutableCriteria

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

Introduction

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

Prototype

public Criteria getExecutableCriteria(Session session) 

Source Link

Document

Get an executable instance of Criteria to actually run the query.

Usage

From source file:$.AbstractHibernateDaoImpl.java

License:Apache License

@SuppressWarnings("unchecked")
    public T getUniqueResultByCriteria(DetachedCriteria criteria) {
        return (T) criteria.getExecutableCriteria(getSession()).uniqueResult();
    }/*ww  w  . ja v a 2s . c om*/

From source file:$.GenericDaoImpl.java

License:Apache License

public Object getUniqueResultByCriteria(DetachedCriteria criteria) {
        return criteria.getExecutableCriteria(getSession()).uniqueResult();
    }

From source file:apm.common.core.DaoImpl.java

License:Open Source License

/**
 * /*from   ww w . j av  a2s . c  o  m*/
 * @param page
 * @param detachedCriteria
 * @param resultTransformer
 * @return
 */
@SuppressWarnings("unchecked")
public Page<T> find(Page<T> page, DetachedCriteria detachedCriteria, ResultTransformer resultTransformer) {
    // get count
    if (!page.isDisabled() && !page.isNotCount()) {
        page.setCount(count(detachedCriteria));
        if (page.getCount() < 1) {
            return page;
        }
    }
    Criteria criteria = detachedCriteria.getExecutableCriteria(getSession());
    criteria.setResultTransformer(resultTransformer);
    // set page
    if (!page.isDisabled()) {
        criteria.setFirstResult(page.getFirstResult());
        criteria.setMaxResults(page.getMaxResults());
    }
    // order by
    if (StringUtils.isNotBlank(page.getOrderBy())) {
        for (String order : StringUtils.split(page.getOrderBy(), ",")) {
            String[] o = StringUtils.split(order, " ");
            if (o.length == 1) {
                criteria.addOrder(Order.asc(o[0]));
            } else if (o.length == 2) {
                if ("DESC".equals(o[1].toUpperCase())) {
                    criteria.addOrder(Order.desc(o[0]));
                } else {
                    criteria.addOrder(Order.asc(o[0]));
                }
            }
        }
    }
    page.setList(criteria.list());
    return page;
}

From source file:apm.common.core.DaoImpl.java

License:Open Source License

/**
 * /*from w w  w .j  a  v  a 2s.  c o  m*/
 * @param detachedCriteria
 * @param resultTransformer
 * @return
 */
@SuppressWarnings("unchecked")
public List<T> find(DetachedCriteria detachedCriteria, ResultTransformer resultTransformer) {
    Criteria criteria = detachedCriteria.getExecutableCriteria(getSession());
    criteria.setResultTransformer(resultTransformer);
    return criteria.list();
}

From source file:apm.common.core.DaoImpl.java

License:Open Source License

/**
 * //from w ww  .j  av a  2  s . co m
 * @param detachedCriteria
 * @return
 */
@SuppressWarnings("rawtypes")
public long count(DetachedCriteria detachedCriteria) {
    Criteria criteria = detachedCriteria.getExecutableCriteria(getSession());
    long totalCount = 0;
    try {
        // Get orders
        Field field = CriteriaImpl.class.getDeclaredField("orderEntries");
        field.setAccessible(true);
        List orderEntrys = (List) field.get(criteria);
        // Remove orders
        field.set(criteria, new ArrayList());
        // Get count
        criteria.setProjection(Projections.rowCount());
        totalCount = Long.valueOf(criteria.uniqueResult().toString());
        // Clean count
        criteria.setProjection(null);
        // Restore orders
        field.set(criteria, orderEntrys);
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    return totalCount;
}

From source file:ar.com.zauber.commons.repository.SpringHibernateRepository.java

License:Apache License

/** @see Repository#find(Query) */
@SuppressWarnings("unchecked")
public final <T extends Persistible> List<T> find(final Query<T> query) {
    CriteriaSpecification criteria = getCriteriaSpecification(null, query, false);
    final SimpleQuery<T> simpleQuery = (SimpleQuery<T>) query;
    Criteria aCriteria;//from  ww  w  .  j a va2s . com
    // TODO Esto debera ir en el metodo que hace getCriteriaSpecification
    // pero como no tiene DetachedCriteria posibilidad de setearle valores
    // para paginacin hubo que hacerlo as.
    if (simpleQuery.getPaging() != null) {
        int firstResult = (simpleQuery.getPaging().getPageNumber() - 1)
                * simpleQuery.getPaging().getResultsPerPage();
        DetachedCriteria idsDetachedCriteria = (DetachedCriteria) criteria;
        idsDetachedCriteria.setProjection(Projections.id());
        Criteria idsCriteria = idsDetachedCriteria.getExecutableCriteria(this.getSession());
        idsCriteria.setCacheable(query.getCacheable());
        idsCriteria.setFirstResult(firstResult);
        idsCriteria.setMaxResults(simpleQuery.getPaging().getResultsPerPage());
        // Se hace primero el select de los IDs y luego el de los objetos en
        // si ya que de otra manera en aquellos casos que haya objetos
        // que tienen colecciones cuenta los mismos varias veces haciendo
        // que se devuelvan menos resultados.
        List<Long> ids = idsCriteria.list();
        DetachedCriteria theCriteria = (DetachedCriteria) getCriteriaSpecification(null, query, false);
        if (ids.isEmpty()) {
            return new ArrayList<T>();
        }
        theCriteria.add(Restrictions.in("id", ids));
        aCriteria = theCriteria.getExecutableCriteria(this.getSession());

    } else {
        aCriteria = ((DetachedCriteria) criteria).getExecutableCriteria(this.getSession());
    }
    aCriteria.setCacheable(query.getCacheable());
    return aCriteria.list();
}

From source file:ar.com.zauber.commons.repository.SpringHibernateRepository.java

License:Apache License

/** @see Repository#aggregate(Query, Class) */
@SuppressWarnings("unchecked")
public final <R, T extends Persistible> R aggregate(final Query<T> query,
        final AggregateFunction aggregateFunction, final Class<R> retClazz) {
    Validate.notNull(query);/*from   w w w .  ja v a2  s  . c  o  m*/
    Validate.notNull(aggregateFunction);
    Validate.notNull(retClazz);

    boolean ignoreOrder = true;

    if (aggregateFunction instanceof CompositeAggregateFunction) {
        List<AggregateFunction> list = ((CompositeAggregateFunction) aggregateFunction).getFunctions();
        for (AggregateFunction a : list) {
            if (a instanceof GroupPropertyAggregateFilter) {
                ignoreOrder = false;
            }
        }
    } else if (aggregateFunction instanceof GroupPropertyAggregateFilter) {
        ignoreOrder = false;
    }
    final DetachedCriteria criteria = (DetachedCriteria) getCriteriaSpecification(null, query, ignoreOrder);
    final ProjectionAggregateFunctionVisitor visitor = new ProjectionAggregateFunctionVisitor();
    aggregateFunction.accept(visitor);
    criteria.setProjection(visitor.getProjection());
    return (R) getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(final Session session) throws HibernateException, SQLException {
            criteria.getExecutableCriteria(session).setCacheable(query.getCacheable());

            final List l = criteria.getExecutableCriteria(session).list();
            return l.size() == 0 ? null : l.size() == 1 ? l.get(0) : l;
        }
    });
}

From source file:au.com.optus.mcas.sdp.bizservice.ott.ordertracking.batchjob.dao.impl.AbstractDaoImpl.java

License:Open Source License

/**
 * {@inheritDoc}//from w w  w . jav  a  2  s  . c o m
 */
@SuppressWarnings("unchecked")
public List<E> findByCriteria(final DetachedCriteria criteria) {
    Assert.notNull(criteria, "Detached criterial cannot be null in call to findByCriteria()");

    if (getLogger().isDebugEnabled()) {
        getLogger().debug(String.format("Finding instances of '%s' using detached criteria: %s",
                getEntityClass(), criteria));
    }

    final Criteria executableCriteria = criteria.getExecutableCriteria(getHibernateSession());
    return executableCriteria.list();
}

From source file:au.com.optus.mcas.sdp.bizservice.ott.ordertracking.batchjob.dao.impl.AbstractDaoImpl.java

License:Open Source License

/**
 * {@inheritDoc}//  w w w.ja v  a 2  s .c  o  m
 */
@SuppressWarnings("unchecked")
public List<E> findByCriteria(final DetachedCriteria criteria, final int firstResult, final int maxResults) {
    Assert.notNull(criteria, "Detached criterial cannot be null in call to findByCriteria()");

    if (getLogger().isDebugEnabled()) {
        getLogger().debug(String.format(
                "Finding instances of '%s' using detached criteria: %s [firstResult = %d, maxResults = %d]",
                getEntityClass(), criteria, firstResult, maxResults));
    }

    final Criteria executableCriteria = criteria.getExecutableCriteria(getHibernateSession());

    if (firstResult >= 0) {
        executableCriteria.setFirstResult(firstResult);
    }
    if (maxResults > 0) {
        executableCriteria.setMaxResults(maxResults);
    }

    return executableCriteria.list();
}

From source file:au.edu.uts.eng.remotelabs.schedserver.permissions.pages.UsersPage.java

License:Open Source License

/**
 * Gets a list of users with a specific search term. The users may be 
 * excluded from a specific class. //from w ww  .j a va2  s.c  o  m
 * 
 * @param request
 * @return response
 * @throws Exception
 */
@SuppressWarnings("unchecked")
public JSONArray list(HttpServletRequest request) throws JSONException {
    JSONArray arr = new JSONArray();

    Criteria qu = this.db.createCriteria(User.class);

    String search = request.getParameter("search");
    if (search != null) {
        /* Search filter. */
        qu.add(Restrictions.disjunction().add(Restrictions.like("name", search, MatchMode.ANYWHERE))
                .add(Restrictions.like("firstName", search, MatchMode.ANYWHERE))
                .add(Restrictions.like("lastName", search, MatchMode.ANYWHERE)));
    }

    if (request.getParameter("max") != null) {
        /* Max results. */
        qu.setMaxResults(Integer.parseInt(request.getParameter("max")));
    }

    if (request.getParameter("in") != null) {
        /* Users in class. */
        UserClass inClass = new UserClassDao(this.db).findByName(request.getParameter("in"));
        if (inClass == null) {
            this.logger.warn("Not going to add in class as a user list restriction because the class '"
                    + request.getParameter("in") + "' was not found.");
        } else {
            qu.createCriteria("userAssociations").add(Restrictions.eq("userClass", inClass));
        }
    }

    if (request.getParameter("notIn") != null) {
        /* Users not in class. */
        UserClass notInClass = new UserClassDao(this.db).findByName(request.getParameter("notIn"));
        if (notInClass == null) {
            this.logger.warn("Not going to add not in class as a user list restriction because the class '"
                    + request.getParameter("notIn") + "' was not found.");
        } else {
            DetachedCriteria subQu = DetachedCriteria.forClass(User.class)
                    .setProjection(Property.forName("name")).createCriteria("userAssociations")
                    .add(Restrictions.eq("userClass", notInClass));

            List<String> names = subQu.getExecutableCriteria(this.db).list();
            if (names.size() > 0) {
                qu.add(Restrictions.not(Restrictions.in("name", names)));
            }
        }
    }

    qu.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    qu.addOrder(Order.asc("lastName"));
    qu.addOrder(Order.asc("name"));

    for (User user : (List<User>) qu.list()) {
        JSONObject uo = new JSONObject();
        uo.put("name", user.getNamespace() + "-_-" + user.getName());

        if (user.getFirstName() == null || user.getLastName() == null) {
            uo.put("display", user.getName());
        } else {
            uo.put("display", user.getLastName() + ", " + user.getFirstName());
        }

        arr.put(uo);
    }

    return arr;
}