protected DetachedCriteria(String entityName, String alias) { impl = new CriteriaImpl(entityName, alias, null); criteria = impl; }
public boolean hasProjection() { return rootCriteria.getProjection() != null; }
protected List<Subcriteria> getCriteriaSubcriteria(Criteria executable){ List<Subcriteria> subcriteriaList = new ArrayList<CriteriaImpl.Subcriteria>(); if(executable instanceof CriteriaImpl){ CriteriaImpl criteriaImpl = (CriteriaImpl)executable; Iterator subcriteriaIterator = criteriaImpl.iterateSubcriteria(); while (subcriteriaIterator.hasNext()){ Subcriteria subcriteria = (Subcriteria) subcriteriaIterator.next(); subcriteriaList.add(subcriteria); } } return subcriteriaList; } protected List<Order> getOrderingFromCriteria(Criteria executable){
public String getSelect() { return rootCriteria.getProjection().toSqlString( rootCriteria.getProjectionCriteria(), 0, this ); }
public List getResults() { switch (getResultType()) { case LIST: { return criteria.list(); } case UNIQUE_RESULT: { final Object result = criteria.uniqueResult(); return result == null ? Collections.EMPTY_LIST : Arrays.asList(new Object[] { result }); } default: throw new RuntimeException("Result type out of range"); } } }
public QueryParameters getQueryParameters() { List values = new ArrayList(); List types = new ArrayList(); Iterator iter = rootCriteria.iterateExpressionEntries(); while ( iter.hasNext() ) { CriteriaImpl.CriterionEntry ce = (CriteriaImpl.CriterionEntry) iter.next(); selection.setFirstRow( rootCriteria.getFirstResult() ); selection.setMaxRows( rootCriteria.getMaxResults() ); selection.setTimeout( rootCriteria.getTimeout() ); selection.setFetchSize( rootCriteria.getFetchSize() ); iter = rootCriteria.getLockModes().entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); iter = rootCriteria.iterateSubcriteria(); while ( iter.hasNext() ) { CriteriaImpl.Subcriteria subcriteria = (CriteriaImpl.Subcriteria) iter.next(); lockModes, selection, rootCriteria.getCacheable(), rootCriteria.getCacheRegion(), rootCriteria.getComment(), rootCriteria.isLookupByNaturalKey() );
public Object doInHibernate(Session session) throws HibernateException, SQLException { CriteriaImpl impl = (CriteriaImpl) criteria; Criteria totalCriteria = session.createCriteria(impl.getEntityOrClassName()); hibernateTemplate.applySettings(totalCriteria); Iterator iterator = impl.iterateExpressionEntries(); while (iterator.hasNext()) { CriteriaImpl.CriterionEntry entry = (CriteriaImpl.CriterionEntry) iterator.next(); totalCriteria.add(entry.getCriterion()); } Iterator subcriteriaIterator = impl.iterateSubcriteria(); while (subcriteriaIterator.hasNext()) { CriteriaImpl.Subcriteria sub = (CriteriaImpl.Subcriteria) subcriteriaIterator.next(); totalCriteria.createAlias(sub.getPath(), sub.getAlias(), sub.getJoinType(), sub.getWithClause()); } totalCriteria.setProjection(impl.getProjection()); totalCriteria.setProjection(Projections.rowCount()); return ((Number)totalCriteria.uniqueResult()).intValue(); } });
/** * @param requestedPage * @param criteria * @param existingAliases */ private void enrichCriteriaWithFilterables(Page requestedPage, Criteria criteria, Set<String> existingAliases) { sk.seges.sesam.dao.Criterion filterable = requestedPage.getFilterable(); if (filterable == null) { return; } Class<?> resultClass = null; String className = null; try { if (criteria instanceof CriteriaImpl) { className = ((CriteriaImpl) criteria).getEntityOrClassName(); resultClass = Class.forName(className); } } catch (ClassNotFoundException e) { throw new RuntimeException("Unable to recreate class with string " + className + " for filterables."); } criteria.add(retrieveRestriction(filterable, criteria, existingAliases, resultClass)); }
private void createAliasCriteriaMap() { aliasCriteriaMap.put( rootCriteria.getAlias(), rootCriteria ); Iterator iter = rootCriteria.iterateSubcriteria(); while ( iter.hasNext() ) { Criteria subcriteria = (Criteria) iter.next(); if ( subcriteria.getAlias()!=null ) { Object old = aliasCriteriaMap.put( subcriteria.getAlias(), subcriteria ); if (old!=null) { throw new QueryException("duplicate alias: " + subcriteria.getAlias() ); } } } }
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { final SessionImplementor session = ( (CriteriaImpl) criteria ).getSession(); //ugly! final SessionFactoryImplementor factory = session.getFactory(); final OuterJoinLoadable persister = (OuterJoinLoadable) factory.getEntityPersister( criteriaImpl.getEntityOrClassName() ); CriteriaQueryTranslator innerQuery = new CriteriaQueryTranslator( factory, criteriaImpl, criteriaImpl.getEntityOrClassName(), //implicit polymorphism not supported (would need a union) criteriaQuery.generateSQLAlias(), criteriaQuery
protected List<Order> getOrderingFromCriteria(Criteria executable){ List<Order> orderings = new ArrayList<Order>(); if(executable instanceof CriteriaImpl){ CriteriaImpl criteriaImpl = (CriteriaImpl)executable; Iterator orderIterator = criteriaImpl.iterateOrderings(); while (orderIterator.hasNext()){ OrderEntry orderEntry = (OrderEntry) orderIterator.next(); orderings.add(orderEntry.getOrder()); } } return orderings; }
public List list() throws HibernateException { return CriteriaImpl.this.list(); }
/** * Get an executable instance of <literal>Criteria</literal>, * to actually run the query. */ public Criteria getExecutableCriteria(Session session) { impl.setSession( (SessionImpl) session ); return impl; }
public String getWhereCondition() { StringBuffer condition = new StringBuffer(30); Iterator criterionIterator = rootCriteria.iterateExpressionEntries(); while ( criterionIterator.hasNext() ) { CriteriaImpl.CriterionEntry entry = (CriteriaImpl.CriterionEntry) criterionIterator.next(); String sqlString = entry.getCriterion().toSqlString( entry.getCriteria(), this ); condition.append(sqlString); if ( criterionIterator.hasNext() ) condition.append(" and "); } return condition.toString(); }
public Object uniqueResult() throws HibernateException { return CriteriaImpl.this.uniqueResult(); }
public Criteria add(Criterion expression) { add( this, expression ); return this; }
public QueryParameters getQueryParameters() { List values = new ArrayList(); List types = new ArrayList(); Iterator iter = rootCriteria.iterateExpressionEntries(); while ( iter.hasNext() ) { CriteriaImpl.CriterionEntry ce = ( CriteriaImpl.CriterionEntry ) iter.next(); selection.setFirstRow( rootCriteria.getFirstResult() ); selection.setMaxRows( rootCriteria.getMaxResults() ); selection.setTimeout( rootCriteria.getTimeout() ); selection.setFetchSize( rootCriteria.getFetchSize() ); iter = rootCriteria.getLockModes().entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = ( Map.Entry ) iter.next(); iter = rootCriteria.iterateSubcriteria(); while ( iter.hasNext() ) { CriteriaImpl.Subcriteria subcriteria = ( CriteriaImpl.Subcriteria ) iter.next(); lockModes, selection, rootCriteria.getCacheable(), rootCriteria.getCacheRegion(), rootCriteria.getComment(), rootCriteria.isLookupByNaturalKey(), rootCriteria.getResultTransformer() );
public String getSelect() { return rootCriteria.getProjection().toSqlString( rootCriteria.getProjectionCriteria(), 0, this ); }
protected Object getResult(Criteria crit) { CriteriaImpl impl = (CriteriaImpl) crit; String entityOrClassName = impl.getEntityOrClassName(); GrailsClass domainClass = application.getArtefact(DomainClassArtefactHandler.TYPE, entityOrClassName); boolean useLimit = establishWhetherToUseLimit(domainClass.getClazz()); return getResult(crit, useLimit); }
private void createAliasCriteriaMap() { aliasCriteriaMap.put( rootCriteria.getAlias(), rootCriteria ); Iterator iter = rootCriteria.iterateSubcriteria(); while ( iter.hasNext() ) { Criteria subcriteria = ( Criteria ) iter.next(); if ( subcriteria.getAlias() != null ) { Object old = aliasCriteriaMap.put( subcriteria.getAlias(), subcriteria ); if ( old != null ) { throw new QueryException( "duplicate alias: " + subcriteria.getAlias() ); } } } }