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:reviewbot.repository.BookRepository.java

License:Creative Commons License

@Override
@SuppressWarnings("unchecked")
public List<Book> readRange(Integer length, Integer offset) {

    final Integer len = length;
    final Integer offs = offset;

    // Solution by MattC@stackoverflow
    // https://stackoverflow.com/questions/11038234/pagination-with-hibernate-criteria-and-distinct-root-entity/23618190#23618190

    Criteria criteria = getCurrentSession().createCriteria(Book.class);
    Projection idCountProjection = Projections.countDistinct("id");
    criteria.setProjection(idCountProjection);
    int totalResultCount = ((Long) criteria.uniqueResult()).intValue();

    criteria.setProjection(Projections.distinct(Projections.property("id")));
    if (offs != null)
        criteria.setFirstResult(offs);/*  w w w .  ja v a  2s .  c om*/
    if (len != null)
        criteria.setMaxResults(len);
    List uniqueSubList = criteria.list();

    criteria.setProjection(null);
    criteria.setFirstResult(0);
    criteria.setMaxResults(Integer.MAX_VALUE);
    criteria.add(Restrictions.in("id", uniqueSubList));
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    return (List<Book>) criteria.list();
}

From source file:ru.apertum.journal.model.Patient.java

License:Open Source License

/**
 * Criteria sc = session.createCriteria(clazz); ... // fix join return duplicates sc.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
 * return sc.list();//from  w ww. ja v  a  2  s.  c  o  m
 *
 *
 * ??  hashCode()  equals()     
 *
 * @param filter
 * @return
 */
synchronized static public LinkedList<Patient> getPatients(HashMap<String, Object> filter) {
    final Session sess = HibernateUtil.getInstance().getSession();
    try {
        if (filter == null) {
            final LinkedList li = new LinkedList(sess.createCriteria(Patient.class)
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list());
            if (li.isEmpty()) {
                createIndexes();
            }
            return li;
            //  return new LinkedList(sess.createCriteria(Patient.class).setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list());
            //  return new LinkedList(sess.createCriteria(Patient.class).list());
        } else {
            final Criteria criteria = sess.createCriteria(Patient.class)
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
            //final Criteria criteria = sess.createCriteria(Patient.class);
            filter.keySet().stream().forEach((key) -> {
                criteria.add(Restrictions.eq(key, filter.get(key)));
            });
            //criteria.addOrder(Order.asc("second_name"));
            return new LinkedList<>(criteria.list());
        }
    } finally {
        sess.close();
    }
}

From source file:ru.apertum.qsystem.server.model.calendar.QCalendarList.java

License:Open Source License

@Override
protected LinkedList<QCalendar> load() {
    return new LinkedList<>(Spring.getInstance().getHt().findByCriteria(DetachedCriteria
            .forClass(QCalendar.class).setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)));
}

From source file:ru.apertum.qsystem.server.model.QServiceTree.java

License:Open Source License

@Override
protected LinkedList<QService> load() {
    return new LinkedList<>(Spring.getInstance().getHt()
            .findByCriteria(DetachedCriteria.forClass(QService.class)
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
                    .add(Property.forName("deleted").isNull()).addOrder(Property.forName("seqId").asc())
                    .addOrder(Property.forName("id").asc())));
}

From source file:ru.apertum.qsystem.server.model.response.QResponseTree.java

License:Open Source License

@Override
protected LinkedList<QRespItem> load() {
    return new LinkedList<>(Spring.getInstance().getHt()
            .findByCriteria(DetachedCriteria.forClass(QRespItem.class)
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
                    .add(Property.forName("deleted").isNull()).addOrder(Property.forName("id").asc())));
}

From source file:ru.apertum.qsystem.server.model.schedule.QBreaksList.java

License:Open Source License

@Override
protected LinkedList<QBreaks> load() {
    return new LinkedList<>(Spring.getInstance().getHt().findByCriteria(DetachedCriteria.forClass(QBreaks.class)
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)));
}

From source file:ru.apertum.qsystem.server.model.schedule.QScheduleList.java

License:Open Source License

@Override
protected LinkedList<QSchedule> load() {
    return new LinkedList<>(Spring.getInstance().getHt().findByCriteria(DetachedCriteria
            .forClass(QSchedule.class).setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)));
}

From source file:ubic.gemma.persistence.service.analysis.expression.diff.GeneDiffExMetaAnalysisDaoImpl.java

License:Apache License

/**
 * loads a neDifferentialExpressionMetaAnalysisResult
 *///w  w  w . j  a va  2 s  .  co m
@Override
public GeneDifferentialExpressionMetaAnalysisResult loadResult(Long idResult) {

    Criteria geneQueryMetaAnalysis = this.getSessionFactory().getCurrentSession()
            .createCriteria(GeneDifferentialExpressionMetaAnalysisResult.class)
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
            .add(Restrictions.like("id", idResult));

    return (GeneDifferentialExpressionMetaAnalysisResult) geneQueryMetaAnalysis.list().iterator().next();
}

From source file:ubic.gemma.persistence.service.analysis.expression.diff.GeneDiffExMetaAnalysisDaoImpl.java

License:Apache License

/**
 * loads a DifferentialExpressionMetaAnalysis containing a specific result
 *///from   ww  w. j a  va 2  s. com
@Override
public GeneDifferentialExpressionMetaAnalysis loadWithResultId(Long idResult) {

    Criteria geneQueryMetaAnalysis = this.getSessionFactory().getCurrentSession()
            .createCriteria(GeneDifferentialExpressionMetaAnalysis.class)
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).createCriteria("results")
            .add(Restrictions.like("id", idResult));

    return (GeneDifferentialExpressionMetaAnalysis) geneQueryMetaAnalysis.list().iterator().next();
}

From source file:ubic.gemma.persistence.service.association.phenotype.GenericExperimentDaoImpl.java

License:Apache License

/**
 * Find all Investigations for a specific pubmed
 *//*from w w  w .  j ava2s .  co m*/
@Override
public Collection<GenericExperiment> findByPubmedID(String pubmed) {

    Criteria genericExperiment = this.getSessionFactory().getCurrentSession()
            .createCriteria(GenericExperiment.class);
    genericExperiment.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
            .createCriteria("primaryPublication").createCriteria("pubAccession")
            .add(Restrictions.like("accession", pubmed));

    //noinspection unchecked
    return genericExperiment.list();
}