List of usage examples for org.hibernate.criterion Projections distinct
public static Projection distinct(Projection projection)
From source file:org.egov.services.report.ScheduleService.java
License:Open Source License
public List<Fund> getFunds() { final Criteria voucherHeaderCriteria = getSession().createCriteria(CVoucherHeader.class); final List fundIdList = voucherHeaderCriteria .setProjection(Projections.distinct(Projections.property("fundId.id"))).list(); if (!fundIdList.isEmpty()) return getSession().createCriteria(Fund.class).add(Restrictions.in("id", fundIdList)).list(); return new ArrayList<Fund>(); }
From source file:org.eurocarbdb.action.core.SearchGlycanSequence.java
License:Open Source License
public Criteria createCriteria() { DetachedCriteria crit = createSerializableCriteria(); crit.setProjection(Projections.distinct(Projections.property("glycanSequenceId"))); Criteria criteria = getEntityManager().createQuery(GlycanSequence.class); criteria.add(Subqueries.propertyIn("glycanSequenceId", crit)); if (getIndex() != null) { getIndex().apply(criteria);/* w w w . j av a2s. c o m*/ } return criteria; }
From source file:org.eurocarbdb.action.core.SearchGlycanSequence.java
License:Open Source License
private DetachedCriteria createSerializableCriteria() { // create base criteria log.debug("creating GlycanSequence criteria"); DetachedCriteria criteria;//from www. jav a 2s . com criteria = DetachedCriteria.forClass(GlycanSequence.class); // create biological contexts criteria DetachedCriteria bc_criteria = null; DetachedCriteria tax_criteria = null; DetachedCriteria tissue_criteria = null; DetachedCriteria disease_criteria = null; DetachedCriteria perturbation_criteria = null; if (taxonomyName != null || tissueName != null || diseaseName != null || perturbationName != null) { isNewQuery = true; log.debug("creating Biological context criteria"); bc_criteria = criteria.createCriteria("glycanContexts").createCriteria("biologicalContext", "bc"); // add taxonomy criteria if (taxonomyName != null) { log.debug("adding taxonomy query predicates for input string '" + taxonomyName + "'"); tax_criteria = bc_criteria.createCriteria("taxonomy", "taxa") .createCriteria("taxonomySupertypes", "supertax") .add(Restrictions.ilike("taxon", taxonomyName, MatchMode.EXACT)); } // add tissue criteria if (tissueName != null) { log.debug("adding tissue query predicates for input string '" + tissueName + "'"); tissue_criteria = bc_criteria.createCriteria("tissueTaxonomy", "ttax") .add(Restrictions.ilike("tissueTaxon", tissueName, MatchMode.EXACT)); } // add disease criteria if (diseaseName != null) { log.debug("adding disease query criteria for input string '" + diseaseName + "'"); disease_criteria = bc_criteria.createCriteria("diseaseContexts").createCriteria("disease", "dis") .add(Restrictions.ilike("diseaseName", diseaseName, MatchMode.EXACT)); } if (perturbationName != null) { log.debug("adding perturbation query criteria for input string '" + perturbationName + "'"); perturbation_criteria = bc_criteria.createCriteria("perturbationContexts") .createCriteria("perturbation", "per") .add(Restrictions.ilike("perturbationName", perturbationName, MatchMode.EXACT)); } } // add mass criteria boolean mass_query_is_given = false; boolean params_are_ok = false; if (exactMass > 0 && exactMassTolerance > 0) { isNewQuery = true; mass_query_is_given = true; lowMass = exactMass - exactMassTolerance; highMass = exactMass + exactMassTolerance; log.debug("adding predicates for exactMass=" + exactMass + " Da +/- " + exactMassTolerance + " Da (ie: " + lowMass + "-" + highMass + " Da)"); params_are_ok = true; } else if (lowMass > 0 && highMass > 0) { isNewQuery = true; mass_query_is_given = true; exactMass = -1; exactMassTolerance = -1; log.debug("adding predicates for mass range=(" + lowMass + ".." + highMass + " Da)"); params_are_ok = true; } if (mass_query_is_given) { if (params_are_ok) { isNewQuery = true; String property = useAvgMass ? "massAverage" : "massMonoisotopic"; criteria.add(Restrictions.between(property, new BigDecimal(lowMass), new BigDecimal(highMass))); } else { String msg = "Insufficient mass parameters given, either " + "provide an exactMass + exactMassTolerence + useAvgMass preference, " + "or provide a lowMass + highMass + useAvgMass preference"; addActionError(msg); log.info(msg); } } Glycan glycan = null; if (sequenceGWS != null) { glycan = Glycan.fromString(sequenceGWS); glycan.removeReducingEndModification(); if (glycan.isEmpty()) { glycan = null; sequenceGWS = null; } } if (glycan != null) { isNewQuery = true; // search structure in DB String glycoct = glycan.toGlycoCTCondensed(); SugarSequence seq = new SugarSequence(glycoct); SubstructureQuery query = new SubstructureQuery(seq); if (sequencePosition != null) { if (sequencePosition.equals("Core") || sequencePosition.equals("Core + Terminii")) query.setOption(Must_Include_Reducing_Terminus); if (sequencePosition.equals("Terminii") || sequencePosition.equals("Core + Terminii")) query.setOption(Must_Include_All_Non_Reducing_Terminii); } criteria.add(query.getQueryCriterion()); } if (this.additionalQueries.size() > 1) { isNewQuery = true; } for (SavedGlycanSequenceSearch oldQuery : this.additionalQueries) { DetachedCriteria oldCriteria = oldQuery.getQueryCriteria(); criteria.add(Subqueries.propertyIn("glycanSequenceId", oldCriteria)); oldCriteria.setProjection(Projections.distinct(Projections.property("glycanSequenceId"))); this.currentSearch = oldQuery; } return criteria; }
From source file:org.faster.orm.service.hibernate.with.property.HibernateGenericServiceWithName.java
License:Open Source License
@SuppressWarnings("unchecked") @Override//from ww w . j a v a 2 s .c om public List<String> projectNameByCriteria(DetachedCriteria dc) { dc.setProjection(Projections.distinct(Projections.property(getFieldNameOfName()))); return fetchAll(dc); }
From source file:org.fornax.cartridges.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java
License:Apache License
private void addProjection(Criteria criteria) throws PersistenceException { // Prepare projection // All orderBy fields has to be in result - SQL limitation ProjectionList proj = Projections.projectionList().add(Projections.id()); for (ConditionalCriteria crit : cndCriterias) { if (Operator.OrderAsc.equals(crit.getOperator()) || Operator.OrderDesc.equals(crit.getOperator())) { if (crit.getPropertyPath() != null && crit.getPropertyPath().length > 0) { throw new PersistenceException("Can't create distinct condition order by foreign field '" + crit.getPropertyFullName() + "'"); }// w ww . j a v a2 s .c om proj.add(Projections.property(crit.getPropertyFullName())); } } criteria.setProjection(Projections.distinct(proj)); }
From source file:org.freequiz.www.dao.hibernate.HibernateQuestionDAO.java
License:Open Source License
@SuppressWarnings("unchecked") public List<String> findAllGradeLevels() { Criteria crit = HibernateUtil.getSession().createCriteria(getPersistentClass()); crit.setProjection(Projections.distinct(Projections.property("gradeLevel"))); // crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); return crit.list(); }
From source file:org.generationcp.middleware.dao.CharacterDataDAO.java
License:Open Source License
@SuppressWarnings("unchecked") public List<Integer> getObservationUnitIdsByTraitScaleMethodAndValueCombinations( List<TraitCombinationFilter> filters, int start, int numOfRows) throws MiddlewareQueryException { try {// www .j a va 2s.c o m Criteria criteria = getSession().createCriteria(CharacterData.class); criteria.createAlias("variate", "variate"); criteria.setProjection(Projections.distinct(Projections.property("id.observationUnitId"))); // keeps track if at least one filter was added boolean filterAdded = false; for (TraitCombinationFilter combination : filters) { Object value = combination.getValue(); // accept only String values if (value instanceof String) { criteria.add(Restrictions.eq("variate.traitId", combination.getTraitId())); criteria.add(Restrictions.eq("variate.scaleId", combination.getScaleId())); criteria.add(Restrictions.eq("variate.methodId", combination.getMethodId())); criteria.add(Restrictions.eq("value", value)); filterAdded = true; } } if (filterAdded) { // if there is at least one filter, execute query and return results criteria.setFirstResult(start); criteria.setMaxResults((numOfRows)); return criteria.list(); } else { // return empty list if no filter was added return new ArrayList<Integer>(); } } catch (HibernateException e) { throw new MiddlewareQueryException( "Error with getObservationUnitIdsByTraitScaleMethodAndValueCombinations(filters=" + filters + ") query from CharacterData: " + e.getMessage(), e); } }
From source file:org.generationcp.middleware.dao.dms.DmsProjectDao.java
License:Open Source License
public DatasetDTO getDatasetOfSampleList(final Integer sampleListId) { final DatasetDTO datasetDTO; try {//from w w w . j av a 2s . com final ProjectionList projectionList = Projections.projectionList(); projectionList.add(Projections.property("project.projectId"), "datasetId"); projectionList.add(Projections.property("dt.datasetTypeId"), "datasetTypeId"); projectionList.add(Projections.property("project.name"), "name"); projectionList.add(Projections.property("parent.projectId"), "parentDatasetId"); final Criteria criteria = this.getSession().createCriteria(SampleList.class); criteria.createAlias("samples", "sample").createAlias("samples.experiment", "experiment") .createAlias("experiment.project", "project").createAlias("project.parent", "parent") .createAlias("project.datasetType", "dt").add(Restrictions.eq("id", sampleListId)); criteria.setProjection(Projections.distinct(projectionList)); criteria.setResultTransformer(Transformers.aliasToBean(DatasetDTO.class)); datasetDTO = (DatasetDTO) criteria.uniqueResult(); } catch (final HibernateException e) { final String errorMessage = "Error getting getDatasetOfSampleList for sampleListId =" + sampleListId + ":" + e.getMessage(); DmsProjectDao.LOG.error(errorMessage, e); throw new MiddlewareQueryException(errorMessage, e); } return datasetDTO; }
From source file:org.generationcp.middleware.dao.dms.PhenotypeDao.java
License:Open Source License
@SuppressWarnings("Duplicates") public Set<Integer> getPendingVariableIds(final Integer datasetId) { final Criteria criteria = this.getSession().createCriteria(this.getPersistentClass()); criteria.createAlias("experiment", "experiment"); criteria.add(Restrictions.eq("experiment.project.projectId", datasetId)); final Criterion draftValue = Restrictions.isNotNull("draftValue"); final Criterion draftCValueId = Restrictions.isNotNull("draftCValueId"); criteria.add(Restrictions.or(draftValue, draftCValueId)); criteria.setProjection(Projections.distinct(Projections.property("observableId"))); return new HashSet<>(criteria.list()); }
From source file:org.generationcp.middleware.dao.dms.ProjectPropertyDao.java
License:Open Source License
/** * * @param variableNames/*from w ww . ja v a 2 s .c o m*/ * @return a map with Property names (In UPPERCASE) as keys and a map(variableId, variableType) as Value */ @SuppressWarnings("unchecked") public Map<String, Map<Integer, VariableType>> getStandardVariableIdsWithTypeByAlias( final List<String> variableNames, final String programUUID) { final List<String> propertyNamesInUpperCase = Lists.transform(variableNames, new Function<String, String>() { public String apply(final String s) { return s.toUpperCase(); } }); try { if (!propertyNamesInUpperCase.isEmpty()) { final Criteria criteria = this.getSession().createCriteria(this.getPersistentClass(), "property") .setProjection(Projections.distinct(Projections.projectionList() .add(Projections.property("alias")).add(Projections.property("variableId")) .add(Projections.property(TYPE_ID)))); /* Exclude variables used as condition such that variable type in projectprop "Study Detail" as "Study Detail" * is not one of the standard categorizations in Ontology Mapping so it will lead to variable being unmapped */ final List<Integer> variableTypes = VariableType.ids(); variableTypes.remove(VariableType.STUDY_DETAIL.getId()); criteria.add(Restrictions.in(TYPE_ID, variableTypes)); criteria.add(Restrictions.in("alias", variableNames)); criteria.createAlias("property.variable", "variable") .add(Restrictions.eq("variable.isObsolete", 0)); criteria.createAlias("property.project", "project") .add(Restrictions.eq("project.programUUID", programUUID)); final List<Object[]> results = criteria.list(); return this.convertToVariablestandardVariableIdsWithTypeMap(results); } } catch (final HibernateException e) { final String message = "Error in getStandardVariableIdsWithTypeByPropertyNames=" + variableNames + " in ProjectPropertyDao: " + e.getMessage(); ProjectPropertyDao.LOG.error(message, e); throw new MiddlewareQueryException(message, e); } return new HashMap<>(); }