List of usage examples for org.hibernate.criterion Projections distinct
public static Projection distinct(Projection projection)
From source file:org.sakaiproject.signup.dao.SignupMeetingDaoImpl.java
License:Educational Community License
@Override public List<String> getAllLocations(String siteId) throws DataAccessException { DetachedCriteria criteria = DetachedCriteria.forClass(SignupMeeting.class) .setProjection(Projections .distinct(Projections.projectionList().add(Projections.property("location"), "location"))) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).addOrder(Order.asc("location")) .createCriteria("signupSites").add(Restrictions.eq("siteId", siteId)); List<String> locations = (List<String>) getHibernateTemplate().findByCriteria(criteria); if (locations != null && !locations.isEmpty()) { return locations; }//w w w. j a va 2s .c o m return null; }
From source file:org.shredzone.cilla.core.repository.impl.PageDaoHibImpl.java
License:Open Source License
@SuppressWarnings("unchecked") @Override/*from w w w. java 2 s. c om*/ @Transactional(readOnly = true) public List<String> proposeSubjects(String query, int limit) { return getCurrentSession().createCriteria(Page.class) .add(Restrictions.like("subject", query, MatchMode.ANYWHERE)).setMaxResults(limit) .addOrder(Order.asc("subject")).setProjection(Projections.distinct(Projections.property("subject"))) .list(); }
From source file:org.shredzone.cilla.service.search.strategy.AbstractSearchStrategy.java
License:Open Source License
/** * Creates a {@link Criteria} object for the filter given in the * {@link SearchResultImpl}.// w w w . j av a 2 s . c o m */ protected Criteria createCriteria(SearchResultImpl result) throws CillaServiceException { Criteria crit = pageDao.criteria(); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); crit.add(Restrictions.and(Restrictions.isNotNull("publication"), Restrictions.le("publication", result.getNow()))); crit.add( Restrictions.or(Restrictions.isNull("expiration"), Restrictions.gt("expiration", result.getNow()))); crit.add(Restrictions.eq("hidden", false)); FilterModel filter = result.getFilter(); if (filter != null) { if (filter.getCategory() != null) { // I'd prefer to use Restrictions.in instead, but this seems to be difficult. // http://stackoverflow.com/questions/407737/hibernate-criteria-querying-tables-in-nm-relationship Disjunction dis = Restrictions.disjunction(); result.getEffectiveCategories().stream().mapToLong(Category::getId) .forEach(id -> dis.add(Restrictions.idEq(id))); crit.createCriteria("categories").add(dis); } if (filter.getTag() != null) { long tagId = filter.getTag().getId(); Disjunction dis = Restrictions.disjunction(); // All pages with the requested tag crit.createAlias("tags", "tt"); dis.add(Restrictions.eq("tt.id", tagId)); // All pages with pictures in a gallery section having the requested tag DetachedCriteria subcrit = DetachedCriteria.forClass(GallerySection.class); subcrit.createCriteria("pictures").createCriteria("tags").add(Restrictions.idEq(tagId)); subcrit.setProjection(Projections.distinct(Projections.property("page.id"))); dis.add(Subqueries.propertyIn("id", subcrit)); crit.add(dis); } if (filter.getCreator() != null) { crit.add(Restrictions.eq("creator", filter.getCreator())); } if (filter.getPage() != null) { crit.add(Restrictions.idEq(filter.getPage().getId())); } if (filter.getDate() != null) { DateRange dr = filter.getDate(); PageOrder order = (filter.getOrder() != null ? filter.getOrder() : PageOrder.PUBLICATION); crit.add(Restrictions.between(order.getColumn(), dr.getFromDate().getTime(), dr.getThruDate().getTime())); } if (filter.getQuery() != null) { // No challenge protected pages for context search, because protected // contents may be revealed in the search results. crit.add(Restrictions.isNull("challenge")); } } return crit; }
From source file:org.workin.persistence.hibernate.v3.dao.Hibernate3PersistenceDaoImpl.java
License:Apache License
@SuppressWarnings("unchecked") @Override//from www. j av a 2 s .c om public <P> long countByCriteria(P parameter, final boolean distinct, final HibernateCriteriaQueryCallback callback) { AssertUtils.assertNotNull(callback, "HibernateCriteriaQueryCallback object can not be null."); if (callback instanceof HibernateCriteriaQueryCallbackDao) ((HibernateCriteriaQueryCallbackDao<P>) callback).setParameter(parameter); return getHibernateTemplate().execute(new HibernateCallback<Long>() { @Override public Long doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(getEntityClass()); if (distinct) criteria.setProjection(Projections.distinct(Projections.rowCount())); else criteria.setProjection(Projections.rowCount()); callback.execute(criteria); return Long.valueOf(String.valueOf(criteria.uniqueResult())); } }); }
From source file:org.workin.persistence.hibernate.v3.dao.Hibernate3PersistenceDaoImpl.java
License:Apache License
@Override public long countByCriteria(final DetachedCriteria criteria, final boolean distinct) { return getHibernateTemplate().execute(new HibernateCallback<Long>() { @Override/* w w w . jav a2 s .co m*/ public Long doInHibernate(Session session) throws HibernateException, SQLException { if (distinct) criteria.setProjection(Projections.distinct(Projections.rowCount())); else criteria.setProjection(Projections.rowCount()); Criteria executableCriteria = criteria.getExecutableCriteria(session); return (Long) executableCriteria.uniqueResult(); } }); }
From source file:org.workin.persistence.hibernate.v4.dao.Hibernate4PersistenceDaoImpl.java
License:Apache License
@SuppressWarnings("unchecked") @Override/* w w w . ja v a 2s . c om*/ public <P> long countByCriteria(P parameter, final boolean distinct, final HibernateCriteriaQueryCallback callback) { AssertUtils.assertNotNull(callback, "HibernateCriteriaQueryCallback object can not be null."); if (callback instanceof HibernateCriteriaQueryCallbackDao) ((HibernateCriteriaQueryCallbackDao<P>) callback).setParameter(parameter); Criteria criteria = getCurrentSession().createCriteria(this.getEntityClass()); if (distinct) criteria.setProjection(Projections.distinct(Projections.rowCount())); else criteria.setProjection(Projections.rowCount()); callback.execute(criteria); return Long.valueOf(String.valueOf(criteria.uniqueResult())); }
From source file:org.workin.persistence.hibernate.v4.dao.Hibernate4PersistenceDaoImpl.java
License:Apache License
@Override public long countByCriteria(final DetachedCriteria criteria, final boolean distinct) { if (distinct) criteria.setProjection(Projections.distinct(Projections.rowCount())); else//from w w w . j av a2 s .c o m criteria.setProjection(Projections.rowCount()); Criteria executableCriteria = criteria.getExecutableCriteria(getCurrentSession()); return (Long) executableCriteria.uniqueResult(); }
From source file:osdigital.dao.AparelhoDao.java
public List<Aparelho> pesqAparelhoModelo(String modelo) { Session sessao = HibernateUtil.getSessionFactory().openSession(); List lscid = null;/*from ww w. j ava2 s . com*/ Criteria consulta = null; try { if (modelo == null || modelo.equalsIgnoreCase("")) { return null; } else { consulta = sessao.createCriteria(Aparelho.class); consulta.setProjection(Projections.distinct(Projections.property("apcdModelo"))); consulta.add(Restrictions.ilike("apcdModelo", "%" + modelo + "%")); return lscid = consulta.list(); } } catch (RuntimeException erro) { throw erro; } finally { sessao.close(); } }
From source file:osdigital.dao.CidadeDao.java
public List<Cidade> listagemCidadesPorNome(String nome) { Session sessao = HibernateUtil.getSessionFactory().openSession(); try {/*w w w. java 2 s . co m*/ Criteria consulta = null; if (nome == null) { consulta = sessao.createCriteria(Cidade.class); } else { consulta = sessao.createCriteria(Cidade.class); consulta.setProjection(Projections.distinct(Projections.property("cid_nome"))); consulta.add(Restrictions.ilike("cid_nome", "%" + nome + "%")); return consulta.list(); } } catch (RuntimeException erro) { throw erro; } finally { sessao.close(); } return null; }
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);//from ww w.ja va 2 s. c o m 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(); }