List of usage examples for org.hibernate.criterion DetachedCriteria setProjection
public DetachedCriteria setProjection(Projection projection)
From source file:org.opensingular.flow.persistence.service.AbstractHibernatePersistenceService.java
License:Apache License
public List<PROCESS_INSTANCE> retrieveProcessInstancesWith(PROCESS_DEF process, SUser creatingUser, Boolean active) {//from www. j a v a2s. c o m Objects.requireNonNull(process); Criteria c = getSession().createCriteria(getClassProcessInstance(), "PI"); c.createAlias("PI.processVersion", "DEF"); c.add(Restrictions.eq("DEF.processDefinition", process)); if (active != null) { DetachedCriteria sub = DetachedCriteria.forClass(getClassTaskInstance(), "T"); sub.createAlias("T.task", "TA"); sub.add(Restrictions.eqProperty("T.processInstance.cod", "PI.cod")); sub.add(Restrictions.isNull("T.endDate")); if (active) { sub.add(Restrictions.ne("TA.type", TaskType.END)); } else { sub.add(Restrictions.eq("TA.type", TaskType.END)); } sub.setProjection(Projections.id()); c.add(Subqueries.exists(sub)); } if (creatingUser != null) { c.add(Restrictions.eq("PI.userCreator", creatingUser)); } c.setCacheable(true).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); return c.list(); }
From source file:org.sakaiproject.genericdao.hibernate.HibernateBasicGenericDao.java
License:Apache License
/** * MUST override this/* ww w . j ava 2 s. c o m*/ */ @SuppressWarnings("unchecked") protected <T> long baseCountBySearch(Class<T> type, Search search) { DetachedCriteria criteria = buildCriteria(type, search); criteria.setProjection(Projections.rowCount()); List<Number> l = (List<Number>) getHibernateTemplate().findByCriteria(criteria); return l.get(0).longValue(); }
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}./*from w w w . j av a2 s . co 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.sigmah.server.dao.hibernate.FilterCriterionBridge.java
License:Open Source License
public static void addAdminRestriction(Conjunction criterion, Filter filter) { if (filter.isRestricted(DimensionType.AdminLevel)) { DetachedCriteria locations = DetachedCriteria.forClass(Location.class); locations.createAlias("adminEntities", "entity"); locations.add(Restrictions.in("entity.id", filter.getRestrictions(DimensionType.AdminLevel))); locations.setProjection(Projections.property("id")); criterion.add(Subqueries.propertyIn("location.id", locations)); }/* ww w .j a va 2 s .c om*/ }
From source file:org.sipfoundry.sipxconfig.common.SipxHibernateDaoSupport.java
License:Contributor Agreement License
/** * Return the count of beans of type beanClass in the specified group. If groupId is null, * then don't filter by group, just count all the beans. *///from w w w .j a v a 2s.c o m public int getBeansInGroupCount(Class beanClass, Integer groupId) { DetachedCriteria crit = DetachedCriteria.forClass(beanClass); addByGroupCriteria(crit, groupId); crit.setProjection(Projections.rowCount()); List results = getHibernateTemplate().findByCriteria(crit); return (Integer) DataAccessUtils.requiredSingleResult(results); }
From source file:org.sipfoundry.sipxconfig.phone.PhoneContextImpl.java
License:Contributor Agreement License
public int getPhonesWithNoLinesCount() { DetachedCriteria crit = DetachedCriteria.forClass(Phone.class); addByNoLinesCriteria(crit);//from w w w. j a va 2 s . c o m crit.setProjection(Projections.rowCount()); List results = getHibernateTemplate().findByCriteria(crit); return (Integer) DataAccessUtils.requiredSingleResult(results); }
From source file:org.socraticgrid.hl7.services.orders.dao.GenericDaoImpl.java
License:Apache License
@Override public Long count(DetachedCriteria criteria) { criteria.setProjection(Projections.rowCount()); return DataAccessUtils.longResult(ht.findByCriteria(criteria)); }
From source file:org.tonguetied.keywordmanagement.KeywordRepositoryImpl.java
License:Apache License
public PaginatedList<Keyword> findKeywords(Keyword keyword, final boolean ignoreCase, final Order order, final Integer firstResult, final Integer maxResults) throws IllegalArgumentException { if (keyword == null) { throw new IllegalArgumentException("keyword cannot be null"); }/*w ww . j a v a2s.c o m*/ final MatchMode matchMode = MatchMode.ANYWHERE; Example criterionKeyword = Example.create(keyword); criterionKeyword.enableLike(matchMode); if (ignoreCase) { criterionKeyword.ignoreCase(); } // Normally, Hibernate performs a left-outer join, when searching for // an object with collections using Criteria. This returns a ResultSet // that contains duplicate objects. In order to get a unique list of // Keywords with paginated support, we need to a nested query to find // distinct matching ids, then get the Keywords. The end result is a // subselect in the main query, but only one query is sent. DetachedCriteria dc = DetachedCriteria.forClass(Keyword.class); dc.add(criterionKeyword); dc.setResultTransformer(DISTINCT_ROOT_ENTITY); Conjunction conjunction = createTranslationConditions(keyword.getTranslations(), ignoreCase, matchMode); if (conjunction != null) dc.createCriteria(FIELD_TRANSLATIONS).add(conjunction); dc.setProjection(Projections.id()); Criteria criteria = getSession().createCriteria(Keyword.class); criteria.add(Subqueries.propertyIn(FIELD_ID, dc)); if (Order.desc == order) criteria.addOrder(desc(FIELD_KEYWORD)); else criteria.addOrder(asc(FIELD_KEYWORD)); if (firstResult != null) criteria.setFirstResult(firstResult); if (maxResults != null) criteria.setMaxResults(maxResults); final List<Keyword> criteriaList = criteria.list(); int maxListSize = 0; if (criteriaList.size() > 0) { maxListSize = calculateMaxListSize(criterionKeyword, conjunction); } return new PaginatedList<Keyword>(criteriaList, maxListSize); }
From source file:org.web4thejob.orm.DataReaderServiceImpl.java
License:Open Source License
private org.hibernate.criterion.Criterion toHibernateSubcriterion(String masterId, String subqueryAlias, Subquery subquery) {// w w w.j a v a 2s . c o m String alias = "subq_" + subqueryAlias; DetachedCriteria detachedCriteria = DetachedCriteria.forClass(subquery.getTarget().getEntityType(), alias); for (Criterion criterion : subquery.getCriteria()) { if (Subquery.MASTER_ID_PLACEHOLDER == criterion.getValue()) { String subProperty = alias + "." + criterion.getPropertyPath().getPath(); detachedCriteria = detachedCriteria.add(Property.forName(subProperty).eqProperty(masterId)); } else if (org.hibernate.criterion.Property.class.isInstance(criterion.getValue())) { detachedCriteria = detachedCriteria .add(((org.hibernate.criterion.Property) criterion.getValue()).eqProperty(masterId)); } else { detachedCriteria = detachedCriteria.add(toHibernateCriterion(criterion, alias)); } } if (subquery.getSubqueryType() == Subquery.SubqueryType.TYPE_EXISTS) { return Subqueries.exists(detachedCriteria .setProjection(Projections.property(alias + "." + subquery.getTarget().getIdentifierName()))); } else { return Subqueries.notExists(detachedCriteria .setProjection(Projections.property(alias + "." + subquery.getTarget().getIdentifierName()))); } }
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/* ww w. j a v a 2 s .c om*/ 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(); } }); }