Example usage for org.hibernate.criterion Projections distinct

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

Introduction

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

Prototype

public static Projection distinct(Projection projection) 

Source Link

Document

Create a distinct projection from a projection.

Usage

From source file:net.longfalcon.newsj.persistence.hibernate.ReleaseDAOImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public List<Long> findReleaseGroupIds() {
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Release.class);
    criteria.setProjection(Projections.distinct(Projections.property("groupId")));

    return criteria.list();
}

From source file:net.longfalcon.newsj.persistence.hibernate.ReleaseDAOImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public List<Long> getDistinctImdbIds(List<Integer> searchCategories, int maxAgeDays,
        List<Integer> userExCatIds) {
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Release.class);
    if (searchCategories != null && !searchCategories.isEmpty()) {
        criteria.add(Restrictions.in("category.id", searchCategories));
    }//w  ww  .ja  v  a  2  s.co m

    if (maxAgeDays > 0) {
        Date maxAge = new DateTime().minusDays(maxAgeDays).toDate();
        criteria.add(Restrictions.gt("postDate", maxAge));
    }

    if (!userExCatIds.isEmpty()) {
        criteria.add(Restrictions.not(Restrictions.in("category.id", userExCatIds)));
    }

    criteria.setProjection(Projections.distinct(Projections.property("imdbId")));

    return criteria.list();
}

From source file:org.ambraproject.search.SavedSearchRetrieverImpl.java

License:Apache License

/**
 * @inheritDoc/*from ww w  .  j  a v  a 2  s. co m*/
 */
@Override
@SuppressWarnings("unchecked")
public List<SavedSearchJob> retrieveSearchAlerts(AlertType alertType, Date startTime, Date endTime) {
    List<SavedSearchJob> searchJobs = new ArrayList<SavedSearchJob>();
    List<Object[]> paramsList = (List<Object[]>) hibernateTemplate.findByCriteria(DetachedCriteria
            .forClass(SavedSearch.class).createAlias("searchQuery", "s").add(alertType.getTypeCriterion())
            .setFetchMode("searchQuery", FetchMode.JOIN)
            .setProjection(Projections.distinct(Projections.projectionList().add(Projections.property("s.ID"))
                    .add(Projections.property("s.hash")).add(Projections.property("searchType"))
                    .add(Projections.property("s.searchParams")))));

    for (Object[] obj : paramsList) {
        searchJobs.add(SavedSearchJob.builder().setSavedSearchQueryID((Long) obj[0]).setHash((String) obj[1])
                .setType((SavedSearchType) obj[2]).setSearchString((String) obj[3])
                .setFrequency(alertType.name()).setStartDate(startTime).setEndDate(endTime).build());
    }

    log.debug("Returning {} saved search(es) for type {}", searchJobs.size(), alertType);

    return searchJobs;
}

From source file:org.ambraproject.search.SavedSearchSenderImpl.java

License:Apache License

@SuppressWarnings("unchecked")
protected List<Object[]> getSavedSearchDetails(Long savedSearchQueryID, String type) {
    SavedSearchRetriever.AlertType alertType = SavedSearchRetriever.AlertType.valueOf(type);

    DetachedCriteria criteria = DetachedCriteria.forClass(UserProfile.class)
            .setProjection(Projections.distinct(Projections.projectionList().add(Projections.property("ss.ID"))
                    .add(Projections.property("email")).add(Projections.property("ss.searchName"))))
            .createAlias("savedSearches", "ss").createAlias("ss.searchQuery", "q")
            .add(Restrictions.eq("q.ID", savedSearchQueryID));

    if (alertType == SavedSearchRetriever.AlertType.WEEKLY) {
        criteria.add(Restrictions.eq("ss.weekly", true));
    }// w w  w  . jav  a  2s .c o  m

    if (alertType == SavedSearchRetriever.AlertType.MONTHLY) {
        criteria.add(Restrictions.eq("ss.monthly", true));
    }

    return (List<Object[]>) hibernateTemplate.findByCriteria(criteria);
}

From source file:org.apache.usergrid.apm.service.NetworkMetricsDBServiceImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public List<String> getUniqueUrls(List<Criterion> criteria) throws HibernateException {
    log.info("Getting unique urls for " + criteria.toString());

    List<String> uniqueUrls = null;
    Session session = null;//from   w w  w. j  a v  a 2  s  . co  m
    Transaction transaction = null;
    try {
        session = ServiceFactory.getAnalyticsHibernateSession();
        transaction = session.beginTransaction();
        Criteria crit = session.createCriteria(ClientNetworkMetrics.class);

        if (criteria != null) {
            Iterator<Criterion> it = criteria.iterator();
            while (it.hasNext()) {
                crit.add(it.next());
            }
        }
        crit.setProjection(Projections.distinct(Projections.property("regexUrl")));
        uniqueUrls = (List<String>) crit.list();
        transaction.commit();
    } catch (Exception e) {
        e.printStackTrace();
        transaction.rollback();
        throw new HibernateException("Cannot get unique urls ", e);
    }
    return uniqueUrls;

}

From source file:org.apache.usergrid.apm.service.SessionDBServiceImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public List<String> getDistinctValuesFromSummarySessionMetrics(String column, Date since)
        throws HibernateException {
    //String query = "SELECT DISTINCT " + column + "FROM SUMMARY_SESSION_METRICS where " +
    log.info("Getting distinct values for " + column + " since " + since);
    List<String> results = null;
    Session session = null;//from   w ww  . j a  v a  2 s.c o m
    Transaction transaction = null;
    try {
        session = ServiceFactory.getAnalyticsHibernateSession();
        transaction = session.beginTransaction();
        Criteria crit = session.createCriteria(SummarySessionMetrics.class);
        crit.add(Restrictions.gt("sessionEndTime", since));
        crit.setProjection(Projections.distinct(Projections.property(column)));
        results = (List<String>) crit.list();
        transaction.commit();
    } catch (Exception e) {
        e.printStackTrace();
        transaction.rollback();
        throw new HibernateException("Cannot get distict values from SummarySessionMetrics ", e);
    }
    return results;

}

From source file:org.archiviststoolkit.plugin.dbdialog.RemoteDBConnectDialogLight.java

/**
 * Method to add more extent types to the AT lookup list in case the user made additions
 * to the backend/*from   w ww .  j  a  va 2  s .  c  o  m*/
 *
 * @param lookupList
 * @return
 */
public void addExtentTypes(LookupList lookupList) {
    Transaction tx = null;
    ArrayList recordList = null;

    try {
        tx = session.beginTransaction();
        Criteria criteria = session.createCriteria(ArchDescriptionPhysicalDescriptions.class);
        criteria.setProjection(Projections.distinct(Projections.property("extentType")));
        recordList = (ArrayList) criteria.list();
        tx.commit();
    } catch (RuntimeException ex) {
        ex.printStackTrace();
    }

    for (Object record : recordList) {
        String extentType = (String) record;

        if (!extentType.isEmpty()) {
            lookupList.addListItem(extentType);
        }
    }
}

From source file:org.archiviststoolkit.plugin.dbdialog.RemoteDBConnectDialogLight.java

/**
 * Method to add salutations to a dummy lookup list in order to add them to the ASpace
 * enum for this/*from   www.  j  a va  2  s  .  c  om*/
 *
 * @param lookupList
 */
public void addSalutations(LookupList lookupList) {
    Transaction tx = null;
    ArrayList recordList = null;

    try {
        tx = session.beginTransaction();
        Criteria criteria = session.createCriteria(Names.class);
        criteria.setProjection(Projections.distinct(Projections.property("salutation")));
        recordList = (ArrayList) criteria.list();
        tx.commit();
    } catch (RuntimeException ex) {
        ex.printStackTrace();
    }

    for (Object record : recordList) {
        String salutation = (String) record;

        if (!salutation.isEmpty()) {
            lookupList.addListItem(salutation);
        }
    }
}

From source file:org.bpmscript.audit.hibernate.HibernateAuditService.java

License:Apache License

/**
 * @see org.bpmscript.audit.hibernate.IAuditMessageService#findMessages(org.bpmscript.paging.IQuery)
 *///from   w ww . j a  v a 2 s .co  m
@SuppressWarnings("unchecked")
public List<String> findDestinations() {
    return (List<String>) getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(HibernateAuditMessage.class);
            criteria.setProjection(Projections
                    .distinct(Projections.projectionList().add(Projections.property("destination"))));
            List list = criteria.list();
            return list;
        }
    });
}

From source file:org.bpmscript.correlation.hibernate.HibernateCorrelationService.java

License:Apache License

/**
 * @param session//from   w  w  w . j a  va2  s .c o m
 * @return
 */
@SuppressWarnings("unchecked")
protected List<String> getDistinctExpressions(String channelName, Session session) {
    Criteria criteria = session.createCriteria(HibernateCorrelation.class);
    criteria.setProjection(Projections.distinct(Projections.property("expressions")));
    criteria.add(Expression.eq("channel", channelName));
    criteria.add(Expression.gt("timeout", System.currentTimeMillis()));
    List<String> result = criteria.list();
    return result;
}