List of usage examples for org.hibernate.criterion DetachedCriteria createAlias
public DetachedCriteria createAlias(String associationPath, String alias)
From source file:org.openremote.beehive.api.service.impl.ModelServiceImpl.java
License:Open Source License
/** * {@inheritDoc}//from www . j av a 2s.c o m */ public List<ModelDTO> findModelsByVendorName(String vendorName) { if (genericDAO.getByNonIdField(Vendor.class, "name", vendorName) == null) { return null; } DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Model.class); detachedCriteria.createAlias("vendor", "v").add(Restrictions.eq("v.name", vendorName)); List<Model> models = genericDAO.findByDetachedCriteria(detachedCriteria); List<ModelDTO> modelDTOList = new ArrayList<ModelDTO>(); for (Model model : models) { ModelDTO modelDTO = new ModelDTO(); try { BeanUtils.copyProperties(modelDTO, model); } catch (IllegalAccessException e) { // TODO handle exception e.printStackTrace(); } catch (InvocationTargetException e) { // TODO handle exception e.printStackTrace(); } modelDTOList.add(modelDTO); } return modelDTOList; }
From source file:org.opensingular.flow.persistence.service.AbstractHibernatePersistenceService.java
License:Apache License
public List<PROCESS_INSTANCE> retrieveProcessInstancesWith(PROCESS_DEF process, Date dataInicio, Date dataFim, java.util.Collection<? extends TASK_DEF> states) { Objects.requireNonNull(process); final Criteria c = getSession().createCriteria(getClassProcessInstance(), "PI"); c.createAlias("PI.processVersion", "DEF"); c.add(Restrictions.eq("DEF.processDefinition", process)); if (states != null && !states.isEmpty()) { DetachedCriteria sub = DetachedCriteria.forClass(getClassTaskInstance(), "T"); sub.add(Restrictions.eqProperty("T.processInstance.cod", "PI.cod")); sub.createAlias("T.task", "TV"); sub.add(Restrictions.in("TV.taskDefinition", states)); sub.add(Restrictions.isNull("T.endDate")); sub.setProjection(Projections.id()); c.add(Subqueries.exists(sub));//from w w w .j a va2 s .c o m } if (dataInicio != null && dataFim != null) { c.add(Restrictions.or( Restrictions.and(Restrictions.ge("PI.beginDate", dataInicio), Restrictions.lt("PI.beginDate", dataFim)), Restrictions.and(Restrictions.ge("PI.endDate", dataInicio), Restrictions.lt("PI.endDate", dataFim)), Restrictions.and(Restrictions.lt("PI.beginDate", dataInicio), Restrictions.ge("PI.endDate", dataInicio)), Restrictions.and(Restrictions.isNull("PI.endDate"), Restrictions.lt("PI.beginDate", dataFim)))); } else if (dataInicio != null) { c.add(Restrictions.or(Restrictions.ge("PI.beginDate", dataInicio), Restrictions.ge("PI.endDate", dataInicio), Restrictions .and(Restrictions.lt("PI.beginDate", dataInicio), Restrictions.isNull("PI.endDate")))); } else if (dataFim != null) { c.add(Restrictions.or(Restrictions.le("PI.beginDate", dataFim), Restrictions.le("PI.endDate", dataFim))); } c.addOrder(Order.desc("PI.beginDate")); return c.list(); }
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 w w w . j av a2 s .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.shept.persistence.provider.hibernate.HibernateCriteriaFilter.java
License:Apache License
/** * @return a default criteria definition by simply return an empty entity object * @see http://stackoverflow.com/questions/1926618/hibernate-sort-by-properties-of-inner-bean * /*from w w w . ja va 2 s . c om*/ */ public DetachedCriteria getCriteria(SortDefinition sortDefinition) { SortDefinition sd = defaultSortDefinition; DetachedCriteria crit = DetachedCriteria.forClass(getEntityClass()); // set sort criteria from FormFilter if (null != sortDefinition && StringUtils.hasText(sortDefinition.getProperty())) { sd = sortDefinition; } if (null != sd && StringUtils.hasText(sd.getProperty())) { String prop = sd.getProperty(); String[] pathArr = StringUtils.split(prop, "."); if (pathArr == null) { pathArr = new String[] { prop }; } if (pathArr.length > 2) { throw new UnsupportedOperationException( "Sort Criteria Definition '" + prop + "' may only nest one level deep"); } if (pathArr.length == 2) { crit.createAlias(pathArr[0], pathArr[0]); } if (sortDefinition.isAscending()) crit.addOrder(Order.asc(prop)); else crit.addOrder(Order.desc(prop)); } 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)); }//from w w w .j a v a2 s. c o m }
From source file:org.web4thejob.orm.DataReaderServiceImpl.java
License:Open Source License
private String buildAlias(DetachedCriteria detachedCriteria, Map<String, String> aliases, String aliasPath) { if (!aliases.containsKey(aliasPath)) { String alias = aliasPath.replaceAll("\\.", "_"); aliases.put(aliasPath, alias);/*from www.j a v a2s . co m*/ detachedCriteria.createAlias(aliasPath, alias); } return aliases.get(aliasPath); }
From source file:ro.cs.om.model.dao.impl.DaoOOOImpl.java
License:Open Source License
/** * Searches for out of office profiles after criterion from searchOOOBean * @author alu/*from www . jav a2 s .c om*/ * @return A list of ooo beans * @throws ParseException */ public List getOOOBeanFromSearch(SearchOOOBean searchOOOBean, boolean isDeleteAction) throws ParseException { logger.debug("getOOOBeanFromSearch - START"); /*Once a Projection is being set to a Detached Criteria object, it cannot be removed anymore, so two identical DetachedCriteria objects must be created: -dcCount ( on which the projection is being set )used to retrieve the number of distinct results which is set when the request didn't come from the pagination area and needed further more to set the current page after a delete action; -dc used to retrieve the result set after the current page has been set in case of a delete action */ // set search criterion DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.oooAllEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.oooAllEntity); dc.createAlias("person", "person"); dcCount.createAlias("person", "person"); if (searchOOOBean.getOrganisationId() != -1) { dc.createCriteria("person.depts") .add(Restrictions.eq("organisationId", searchOOOBean.getOrganisationId())); dcCount.createCriteria("person.depts") .add(Restrictions.eq("organisationId", searchOOOBean.getOrganisationId())); } if (searchOOOBean.getOwnerFirstName() != null && !"".equals(searchOOOBean.getOwnerFirstName())) { dc.add(Restrictions.eq("person.firstName", searchOOOBean.getOwnerFirstName())); dcCount.add(Restrictions.eq("person.firstName", searchOOOBean.getOwnerFirstName())); logger.debug("Owner first name: ".concat(searchOOOBean.getOwnerFirstName())); } if (searchOOOBean.getOwnerLastName() != null && !"".equals(searchOOOBean.getOwnerLastName())) { dc.add(Restrictions.eq("person.lastName", searchOOOBean.getOwnerLastName())); dcCount.add(Restrictions.eq("person.lastName", searchOOOBean.getOwnerLastName())); logger.debug("Owner last name: ".concat(searchOOOBean.getOwnerLastName())); } if (searchOOOBean.getReplacementFirstName() != null && !"".equals(searchOOOBean.getReplacementFirstName()) && searchOOOBean.getReplacementLastName() != null && !"".equals(searchOOOBean.getReplacementLastName())) { dc.createCriteria("personReplacement") .add(Restrictions.eq("firstName", searchOOOBean.getReplacementFirstName())) .add(Restrictions.eq("lastName", searchOOOBean.getReplacementLastName())); dcCount.createCriteria("personReplacement") .add(Restrictions.eq("firstName", searchOOOBean.getReplacementFirstName())) .add(Restrictions.eq("lastName", searchOOOBean.getReplacementLastName())); } if (searchOOOBean.getStartPeriod() != null) { dc.add(Expression.ge("startPeriod", searchOOOBean.getStartPeriod())); dcCount.add(Expression.ge("startPeriod", searchOOOBean.getStartPeriod())); } if (searchOOOBean.getEndPeriod() != null) { dc.add(Expression.le("endPeriod", searchOOOBean.getEndPeriod())); dcCount.add(Expression.le("endPeriod", searchOOOBean.getEndPeriod())); } dc.setProjection(Projections.id()); dcCount.setProjection(Projections.id()); // until here, I've created the subquery // now, it's time to retrive all the profiles that are in the list of the subquery DetachedCriteria dc1 = DetachedCriteria.forEntityName(IModelConstant.oooAllEntity); dc1.createAlias("person", "person"); dc1.add(Subqueries.propertyIn("outOfOfficeId", dc)); // check if I have to order the results if (searchOOOBean.getSortParam() != null && !"".equals(searchOOOBean.getSortParam())) { logger.debug("Add sorting ! 234234"); // if I have to, check if I have to order them ascending or descending if (searchOOOBean.getSortDirection() == -1) { // ascending dc1.addOrder(Order.asc(searchOOOBean.getSortParam())); } else { // descending dc1.addOrder(Order.desc(searchOOOBean.getSortParam())); } } // if the request didn't come from the pagination area, // it means that I have to set the number of results and pages if (isDeleteAction || searchOOOBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchOOOBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("outOfOfficeId")); //findByCriteria must be called with firstResult and maxResults parameters; the default findByCriteria(DetachedCriteria criteria) implementation //sets firstResult and maxResults to -1, which kills the countDistinct Projection int nbrOfResults = ((Integer) getHibernateTemplate().findByCriteria(dcCount, 0, 0).get(0)).intValue(); logger.debug("search results: ".concat(String.valueOf(nbrOfResults))); searchOOOBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchOOOBean.getResultsPerPage() == 0) { searchOOOBean.setNbrOfPages(nbrOfResults / searchOOOBean.getResultsPerPage()); } else { searchOOOBean.setNbrOfPages(nbrOfResults / searchOOOBean.getResultsPerPage() + 1); } // after an ooo profile is deleted, the same page has to be displayed; //only when all the ooo profiles from last page are deleted, the previous page will be shown if (isDeleteAction && (searchOOOBean.getCurrentPage() > searchOOOBean.getNbrOfPages())) { searchOOOBean.setCurrentPage(searchOOOBean.getNbrOfPages()); } else if (isSearch) { searchOOOBean.setCurrentPage(1); } } List res = getHibernateTemplate().findByCriteria(dc1, (searchOOOBean.getCurrentPage() - 1) * searchOOOBean.getResultsPerPage(), searchOOOBean.getResultsPerPage()); logger.debug("getOOOBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }
From source file:ubc.pavlab.aspiredb.server.dao.CriteriaBuilder.java
License:Apache License
private static void addLocationAlias(DetachedCriteria subquery, EntityType target) { if (target == EntityType.SUBJECT) { subquery.createAlias("variants", "variant"); subquery.createAlias("variant.location", "location"); }//from w ww . j av a2 s .co m }
From source file:ubc.pavlab.aspiredb.server.dao.CriteriaBuilder.java
License:Apache License
private static void addPhenotypeAlias(DetachedCriteria subquery, EntityType target) { if (target == EntityType.SUBJECT) { subquery.createAlias("phenotypes", "phenotype"); } else {// w ww . j a v a 2 s . c om subquery.createAlias("subject", "subject").createAlias("subject.phenotypes", "phenotype"); } }