List of usage examples for org.hibernate.criterion DetachedCriteria createCriteria
public DetachedCriteria createCriteria(String associationPath)
From source file:org.n52.sos.ds.hibernate.dao.OfferingDAO.java
License:Open Source License
/** * Get Hibernate Detached Criteria for class ObservationConstellation and * observableProperty identifier//from w w w . j av a 2s . co m * * @param observablePropertyIdentifier * ObservableProperty identifier parameter * @param session * Hibernate session * @return Detached Criteria with Offering entities as result */ private DetachedCriteria getDetachedCriteriaOfferingForObservablePropertyFromObservationConstellation( String observablePropertyIdentifier, Session session) { final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class); detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false)); detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY) .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier)); detachedCriteria .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.dao.OfferingDAO.java
License:Open Source License
/** * Get Hibernate Detached Criteria for class ObservationConstellation and * procedure identifier/*from w ww .j av a 2 s. c om*/ * * @param procedureIdentifier * Procedure identifier parameter * @param session * Hibernate session * @return Detached Criteria with Offering entities as result */ private DetachedCriteria getDetachedCriteriaOfferingForProcedureFromObservationConstellation( String procedureIdentifier, Session session) { final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class); detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false)); detachedCriteria.createCriteria(ObservationConstellation.PROCEDURE) .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier)); detachedCriteria .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java
License:Open Source License
/** * Get Hibernate Detached Criteria for class ObservationConstellation and * observableProperty identifier/*from w ww.j a v a 2 s . c o m*/ * * @param observablePropertyIdentifier * ObservableProperty identifier parameter * @param session * Hibernate session * @return Hiberante Detached Criteria with Procedure entities */ private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromObservationConstellation( String observablePropertyIdentifier, Session session) { final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class); detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false)); detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY) .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier)); detachedCriteria .setProjection(Projections.distinct(Projections.property(ObservationConstellation.PROCEDURE))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java
License:Open Source License
/** * Get Hibernate Detached Criteria for class Series and observableProperty * identifier/*from w ww . j a v a 2s . co m*/ * * @param observablePropertyIdentifier * ObservableProperty identifier parameter * @param session * Hibernate session * @return Hiberante Detached Criteria with Procedure entities * @throws CodedException */ private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromSeries( String observablePropertyIdentifier, Session session) throws CodedException { final DetachedCriteria detachedCriteria = DetachedCriteria .forClass(DaoFactory.getInstance().getSeriesDAO().getClass()); detachedCriteria.add(Restrictions.eq(Series.DELETED, false)); detachedCriteria.createCriteria(Series.OBSERVABLE_PROPERTY) .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier)); detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.PROCEDURE))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java
License:Open Source License
/** * Get Hibernate Detached Criteria for class ObservationConstellation and * offering identifier//from w ww. j a va 2 s. c o m * * @param offeringIdentifier * Offering identifier parameter * @param session * Hibernate session * @return Detached Criteria with Procedure entities */ private DetachedCriteria getDetachedCriteriaProceduresForOfferingFromObservationConstellation( String offeringIdentifier, Session session) { final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class); detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false)); detachedCriteria.createCriteria(ObservationConstellation.OFFERING) .add(Restrictions.eq(Offering.IDENTIFIER, offeringIdentifier)); detachedCriteria .setProjection(Projections.distinct(Projections.property(ObservationConstellation.PROCEDURE))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java
License:Open Source License
/** * Get Detached Criteria for series concept. Criteria results are * FeatureOfInterest entities.//w w w . ja va2 s . c o m * * @param req * GetFeatureOfInterest request * @param session * Hibernate Sesstion * @return Detached Criteria * @throws CodedException If an error occurs during processing */ private DetachedCriteria getDetachedCriteriaForSeriesWithProcedureObservableProperty( GetFeatureOfInterestRequest req, Session session) throws CodedException { final DetachedCriteria detachedCriteria = DetachedCriteria .forClass(EntitiyHelper.getInstance().getSeriesEntityClass()); detachedCriteria.add(Restrictions.eq(Series.DELETED, false)); // observableProperties if (req.isSetObservableProperties()) { detachedCriteria.createCriteria(Series.OBSERVABLE_PROPERTY) .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties())); } // procedures if (req.isSetProcedures()) { detachedCriteria.createCriteria(Series.PROCEDURE) .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures())); } detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.FEATURE_OF_INTEREST))); return detachedCriteria; }
From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java
License:Open Source License
/** * Get Detached Criteria for SOS 1.0.0 and series concept. Criteria results * are Series entities.// www. java2s . c om * * @param req * GetFeatureOfInterest request * @param session * Hibernate Sesstion * @return Detached Criteria * @throws CodedException If an error occurs during processing */ private DetachedCriteria getDetachedCriteriaForSeriesWithProcedureObservablePropertyTemporalFilter( GetFeatureOfInterestRequest req, Session session) throws CodedException { final DetachedCriteria detachedCriteria = DetachedCriteria .forClass(EntitiyHelper.getInstance().getObservationInfoEntityClass()); DetachedCriteria seriesCriteria = detachedCriteria.createCriteria(SeriesObservationInfo.SERIES); detachedCriteria.add(Restrictions.eq(Series.DELETED, false)); // observableProperties if (req.isSetObservableProperties()) { seriesCriteria.createCriteria(Series.OBSERVABLE_PROPERTY) .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties())); } // procedures if (req.isSetProcedures()) { seriesCriteria.createCriteria(Series.PROCEDURE) .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures())); } // temporal filter if (req.isSetTemporalFilters()) { detachedCriteria.add(TemporalRestrictions.filter(req.getTemporalFilters())); } detachedCriteria.setProjection(Projections.distinct(Projections.property(SeriesObservationInfo.SERIES))); return detachedCriteria; }
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}./* www . j a v a 2 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.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"); }/*from ww w.j av a2 s . 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.tynamo.hibernate.services.HibernatePersistenceServiceImpl.java
License:Apache License
public List getInstances(final Object example, final TynamoClassDescriptor classDescriptor) { //create Criteria instance DetachedCriteria searchCriteria = DetachedCriteria.forClass(example.getClass()); searchCriteria = alterCriteria(example.getClass(), searchCriteria); //loop over the example object's PropertyDescriptors for (TynamoPropertyDescriptor propertyDescriptor : classDescriptor.getPropertyDescriptors()) { //only add a Criterion to the Criteria instance if this property is searchable if (propertyDescriptor.isSearchable()) { String propertyName = propertyDescriptor.getName(); Class propertyClass = propertyDescriptor.getPropertyType(); Object value = getPropertyAccess().get(example, propertyName); //only add a Criterion to the Criteria instance if the value for this property is non-null if (value != null) { if (String.class.isAssignableFrom(propertyClass) && ((String) value).length() > 0) { searchCriteria.add(Restrictions.like(propertyName, value.toString(), MatchMode.ANYWHERE)); }/*from w w w .j ava 2 s . c o m*/ /** * 'one'-end of many-to-one, one-to-one * * Just match the identifier */ else if (propertyDescriptor.isObjectReference()) { Serializable identifierValue = getIdentifier(value, descriptorService.getClassDescriptor(propertyDescriptor.getBeanType())); searchCriteria.createCriteria(propertyName).add(Restrictions.idEq(identifierValue)); } else if (propertyClass.isPrimitive()) { //primitive types: ignore zeroes in case of numeric types, ignore booleans anyway (TODO come up with something...) if (!propertyClass.equals(boolean.class) && ((Number) value).longValue() != 0) { searchCriteria.add(Restrictions.eq(propertyName, value)); } } else if (propertyDescriptor.isCollection()) { //one-to-many or many-to-many CollectionDescriptor collectionDescriptor = (CollectionDescriptor) propertyDescriptor; TynamoClassDescriptor collectionClassDescriptor = descriptorService .getClassDescriptor(collectionDescriptor.getElementType()); if (collectionClassDescriptor != null) { String identifierName = collectionClassDescriptor.getIdentifierDescriptor().getName(); Collection<Serializable> identifierValues = new ArrayList<Serializable>(); Collection associatedItems = (Collection) value; if (associatedItems != null && associatedItems.size() > 0) { for (Object o : associatedItems) { identifierValues.add(getIdentifier(o, collectionClassDescriptor)); } //add a 'value IN collection' restriction searchCriteria.createCriteria(propertyName) .add(Restrictions.in(identifierName, identifierValues)); } } } } } } searchCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); // FIXME This won't work because the shadow proxy doesn't implement SessionImplementor // that session is casted to. Maybe we should inject SessionManager instead // and obtain the Session from it return searchCriteria.getExecutableCriteria(getSession()).list(); }