Example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

List of usage examples for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

Introduction

In this page you can find the example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Prototype

ResultTransformer DISTINCT_ROOT_ENTITY

To view the source code for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Click Source Link

Document

Each row of results is a distinct instance of the root entity

Usage

From source file:org.grails.orm.hibernate.query.AbstractHibernateQuery.java

License:Apache License

@Override
public Object singleResult() {
    if (criteria == null)
        throw new IllegalStateException("Cannot execute query using a detached criteria instance");

    if (hibernateProjectionList != null) {
        criteria.setProjection(hibernateProjectionList.getHibernateProjectionList());
    }//from   ww w . j  a v a  2s  .  com
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    applyDefaultSortOrderAndCaching();
    applyFetchStrategies();

    if (hasJoins) {
        try {
            return proxyHandler.unwrap(criteria.uniqueResult());
        } catch (NonUniqueResultException e) {
            return singleResultViaListCall();
        }
    } else {
        return singleResultViaListCall();
    }
}

From source file:org.grouter.domain.dao.ejb3.GenericEjb3DAO.java

License:Apache License

/**
 * {@inheritDoc}//from w ww. j a v  a  2  s  .c o m
 */
public T findById(final ID id, final String... joinProps) {
    org.hibernate.Session session = ((HibernateEntityManager) getEntityManager()).getSession();
    org.hibernate.Criteria criteria = session.createCriteria(getPersistentClass());
    criteria.add(Restrictions.idEq(id));
    for (String prop : joinProps) {
        criteria.setFetchMode(prop, FetchMode.JOIN);
    }
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return (T) criteria.uniqueResult();
}

From source file:org.grouter.domain.dao.ejb3.GenericEjb3DAO.java

License:Apache License

@SuppressWarnings("unchecked")
public T findById(final Class clazz, final T id, final String... joinProps) {
    org.hibernate.Session session = ((HibernateEntityManager) getEntityManager()).getSession();
    org.hibernate.Criteria criteria = session.createCriteria(getPersistentClass());
    criteria.add(Restrictions.idEq(id));
    for (String prop : joinProps) {
        criteria.setFetchMode(prop, FetchMode.JOIN);
    }/*from  w w  w .  java 2s .  co m*/
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return (T) criteria.uniqueResult();
}

From source file:org.grouter.domain.dao.spring.GenericHibernateDAO.java

License:Apache License

@SuppressWarnings("unchecked")
public T findById(Class clazz, ID id, String... joinProps) {
    Criteria criteria = getSession().createCriteria(clazz);
    criteria.add(Restrictions.idEq(id));
    for (String prop : joinProps) {
        criteria.setFetchMode(prop, FetchMode.JOIN);
    }/*w ww.  j a va 2  s . c  o  m*/
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return (T) criteria.uniqueResult();
}

From source file:org.grouter.domain.dao.spring.GenericHibernateDAO.java

License:Apache License

public List<T> findAllUsingFetchMode(final Class clazz, final FetchMode fetchMode, final String... joinProps) {
    Criteria criteria = getSession().createCriteria(clazz);
    for (String disJoinProp : joinProps) {
        criteria.setFetchMode(disJoinProp, fetchMode);
    }/*  ww  w  .jav  a  2s .co  m*/
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return (List<T>) criteria.list();
}

From source file:org.grouter.domain.dao.spring.GenericHibernateDAO.java

License:Apache License

@SuppressWarnings("unchecked")
public T findById(final Class clazz, final T id, final String... joinProps) {
    Criteria criteria = getSession().createCriteria(clazz);
    criteria.add(Restrictions.idEq(id));
    for (String prop : joinProps) {
        criteria.setFetchMode(prop, FetchMode.JOIN);
    }//from   w w w  . j  a va  2 s .  c  o m
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return (T) criteria.uniqueResult();
}

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

License:Open Source License

@Override
public List<UploadRequestGroup> findAllByOwner(Account owner) {
    DetachedCriteria cri = DetachedCriteria.forClass(UploadRequest.class);
    cri.add(Restrictions.eq("owner", owner));
    cri.setProjection(Projections.property("uploadRequestGroup"));
    cri.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    return findByCriteria(cri);
}

From source file:org.molasdin.wbase.hibernate.BasicHibernateRepository.java

License:Apache License

@Override
public List<T> allAtOnce(final String orderProp, final Order order) {
    return support().run(new org.molasdin.wbase.transaction.Transactional<HibernateEngine, List<T>>() {
        @Override/*from  ww w.  j  ava2s.c  o  m*/
        public List<T> run(Transaction<HibernateEngine> tx) throws Exception {
            Criteria criteria = tx.engine().session().createCriteria(clazz);
            criteria.addOrder(order == Order.ASC ? org.hibernate.criterion.Order.asc(orderProp)
                    : org.hibernate.criterion.Order.desc(orderProp));
            criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
            return tx.engine().invokeCriteriaForList(criteria, clazz);
        }
    });

}

From source file:org.openhealthtools.openatna.audit.persistence.dao.hibernate.AbstractHibernateDao.java

License:Apache License

protected List<? extends E> all(int offset, int amount) {
    Criteria messageCriteria = criteria();
    Criteria idCriteria = criteria().setProjection(Projections.id())
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).addOrder(Order.asc("id"))
            .setFirstResult(offset).setMaxResults(amount);
    List<Long> ids = idCriteria.list();
    if (ids == null || ids.size() == 0) {
        return new ArrayList<E>();
    }// ww  w  .  j  a v  a2  s.  c  o m
    if (ids.size() == 1) {
        messageCriteria.add(Restrictions.eq("id", ids.get(0)));
    } else {
        messageCriteria.add(Restrictions.in("id", ids));
    }
    return list(messageCriteria);
}

From source file:org.openhealthtools.openatna.audit.persistence.dao.hibernate.HibernateQueryBuilder.java

License:Apache License

/**
 * NOTE: HAVE TO USE TWO QUERIES HERE. There is NO way around that I can see to ensure getting
 * back both distinct, and correct max results restrictions.
 *
 * @param query/*from   w w  w .ja v  a 2s . c  o m*/
 * @return
 */
public Criteria build(Query query) {

    Map<Query.Target, Set<Query.ConditionalStatement>> map = query.getConditionals();

    CriteriaNode root = new CriteriaNode(idCriteria, "MESSAGE");
    idCriteria.setProjection(Projections.id());
    Set<Query.Target> targets = map.keySet();
    for (Query.Target target : targets) {
        Query.TargetPath tp = Query.createPath(target);
        CriteriaNode node = getNode(root, tp);
        Set<Query.ConditionalStatement> values = map.get(target);
        for (Query.ConditionalStatement value : values) {
            createConditional(root, node, value, tp.getTarget());
        }
    }
    idCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    idCriteria.addOrder(Order.asc("id"));
    List<Long> ids = idCriteria.list();
    if (ids == null || ids.size() == 0) {
        return null;
    }
    if (ids.size() == 1) {
        messageCriteria.add(Restrictions.eq("id", ids.get(0)));
    } else {
        messageCriteria.add(Restrictions.in("id", ids));
    }
    return messageCriteria;
}