Java 类org.hibernate.impl.CriteriaImpl 实例源码

项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
private void createAssociationPathCriteriaMap() {
    Iterator iter = rootCriteria.iterateSubcriteria();
    while ( iter.hasNext() ) {
        CriteriaImpl.Subcriteria crit = ( CriteriaImpl.Subcriteria ) iter.next();
        String wholeAssociationPath = getWholeAssociationPath( crit );
        Object old = associationPathCriteriaMap.put( wholeAssociationPath, crit );
        if ( old != null ) {
            throw new QueryException( "duplicate association path: " + wholeAssociationPath );
        }
        int joinType = crit.getJoinType();
        old = associationPathJoinTypesMap.put( wholeAssociationPath, new Integer( joinType ) );
        if ( old != null ) {
            // TODO : not so sure this is needed...
            throw new QueryException( "duplicate association path: " + wholeAssociationPath );
        }
    }
}
项目:bdf2    文件:HibernateDao.java   
@SuppressWarnings("rawtypes")
public int queryCount(DetachedCriteria detachedCriteria, String dataSourceName) {
    Session session = this.getSessionFactory(dataSourceName).openSession();
    try {
        org.hibernate.Criteria criteria = detachedCriteria.getExecutableCriteria(session);
        try {
            Field field = CriteriaImpl.class.getDeclaredField("orderEntries");
            field.setAccessible(true);
            field.set(criteria, new ArrayList());
        } catch (Exception e) {
            e.printStackTrace();
        }
        int totalCount = 0;
        Object totalObject = criteria.setProjection(Projections.rowCount()).uniqueResult();
        if (totalObject instanceof Integer) {
            totalCount = (Integer) totalObject;
        } else if (totalObject instanceof Long) {
            totalCount = ((Long) totalObject).intValue();
        } else if (totalObject != null) {
            throw new RuntimeException("Can not convert [" + totalObject
                    + "] to a int value when query entity total count!");
        }
        return totalCount;
    } finally {
        session.flush();
        session.close();
    }
}
项目:cacheonix-core    文件:SubqueryExpression.java   
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
        );

    params = innerQuery.getQueryParameters(); //TODO: bad lifecycle....
    types = innerQuery.getProjectedTypes();

    //String filter = persister.filterFragment( innerQuery.getRootSQLALias(), session.getEnabledFilters() );

    String sql = new Select( factory.getDialect() )
        .setWhereClause( innerQuery.getWhereCondition() )
        .setGroupByClause( innerQuery.getGroupBy() )
        .setSelectClause( innerQuery.getSelect() )
        .setFromClause(
                persister.fromTableFragment( innerQuery.getRootSQLALias() ) +   
                persister.fromJoinFragment( innerQuery.getRootSQLALias(), true, false )
            )
        .toStatementString();

    final StringBuffer buf = new StringBuffer()
        .append( toLeftSqlString(criteria, criteriaQuery) );
    if (op!=null) buf.append(' ').append(op).append(' ');
    if (quantifier!=null) buf.append(quantifier).append(' ');
    return buf.append('(').append(sql).append(')')
        .toString();
}
项目:cacheonix-core    文件:CriteriaJoinWalker.java   
public CriteriaJoinWalker(
        final OuterJoinLoadable persister, 
        final CriteriaQueryTranslator translator,
        final SessionFactoryImplementor factory, 
        final CriteriaImpl criteria, 
        final String rootEntityName,
        final Map enabledFilters)
throws HibernateException {
    super(persister, factory, enabledFilters);

    this.translator = translator;

    querySpaces = translator.getQuerySpaces();

    if ( translator.hasProjection() ) {
        resultTypes = translator.getProjectedTypes();

        initProjection( 
                translator.getSelect(), 
                translator.getWhereCondition(), 
                translator.getOrderBy(),
                translator.getGroupBy(),
                LockMode.NONE 
            );
    }
    else {
        resultTypes = new Type[] { TypeFactory.manyToOne( persister.getEntityName() ) };

        initAll( translator.getWhereCondition(), translator.getOrderBy(), LockMode.NONE );
    }

    userAliasList.add( criteria.getAlias() ); //root entity comes *last*
    userAliases = ArrayHelper.toStringArray(userAliasList);

}
项目:cacheonix-core    文件:CriteriaLoader.java   
public CriteriaLoader(
        final OuterJoinLoadable persister,
        final SessionFactoryImplementor factory,
        final CriteriaImpl criteria,
        final String rootEntityName,
        final Map enabledFilters)
throws HibernateException {
    super(factory, enabledFilters);

    translator = new CriteriaQueryTranslator(
            factory,
            criteria,
            rootEntityName,
            CriteriaQueryTranslator.ROOT_SQL_ALIAS
        );

    querySpaces = translator.getQuerySpaces();

    CriteriaJoinWalker walker = new CriteriaJoinWalker(
            persister,
            translator,
            factory,
            criteria,
            rootEntityName,
            enabledFilters
        );

    initFromWalker(walker);

    userAliases = walker.getUserAliases();
    resultTypes = walker.getResultTypes();

    postInstantiate();

}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
public CriteriaQueryTranslator(
        final SessionFactoryImplementor factory,
        final CriteriaImpl criteria,
        final String rootEntityName,
        final String rootSQLAlias,
        CriteriaQuery outerQuery) throws HibernateException {
    this( factory, criteria, rootEntityName, rootSQLAlias );
    outerQueryTranslator = outerQuery;
}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
public CriteriaQueryTranslator(
        final SessionFactoryImplementor factory,
        final CriteriaImpl criteria,
        final String rootEntityName,
        final String rootSQLAlias) throws HibernateException {
    this.rootCriteria = criteria;
    this.rootEntityName = rootEntityName;
    this.sessionFactory = factory;
    this.rootSQLAlias = rootSQLAlias;
    createAliasCriteriaMap();
    createAssociationPathCriteriaMap();
    createCriteriaEntityNameMap();
    createCriteriaSQLAliasMap();
}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
private String getWholeAssociationPath(CriteriaImpl.Subcriteria subcriteria) {
    String path = subcriteria.getPath();

    // some messy, complex stuff here, since createCriteria() can take an
    // aliased path, or a path rooted at the creating criteria instance
    Criteria parent = null;
    if ( path.indexOf( '.' ) > 0 ) {
        // if it is a compound path
        String testAlias = StringHelper.root( path );
        if ( !testAlias.equals( subcriteria.getAlias() ) ) {
            // and the qualifier is not the alias of this criteria
            //      -> check to see if we belong to some criteria other
            //          than the one that created us
            parent = ( Criteria ) aliasCriteriaMap.get( testAlias );
        }
    }
    if ( parent == null ) {
        // otherwise assume the parent is the the criteria that created us
        parent = subcriteria.getParent();
    }
    else {
        path = StringHelper.unroot( path );
    }

    if ( parent.equals( rootCriteria ) ) {
        // if its the root criteria, we are done
        return path;
    }
    else {
        // otherwise, recurse
        return getWholeAssociationPath( ( CriteriaImpl.Subcriteria ) parent ) + '.' + path;
    }
}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
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();
}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
public String getOrderBy() {
    StringBuffer orderBy = new StringBuffer( 30 );
    Iterator criterionIterator = rootCriteria.iterateOrderings();
    while ( criterionIterator.hasNext() ) {
        CriteriaImpl.OrderEntry oe = ( CriteriaImpl.OrderEntry ) criterionIterator.next();
        orderBy.append( oe.getOrder().toSqlString( oe.getCriteria(), this ) );
        if ( criterionIterator.hasNext() ) {
            orderBy.append( ", " );
        }
    }
    return orderBy.toString();
}
项目:jdal    文件:HibernateDao.java   
/**
 * Get Page, apply filter if any.
 * If Filter is a entity model, use Example to create a criteria.
 * else enable filter by name on session. 
 * @param page with page definitions
 * @return page of results
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
public <K> Page<K> getPage(Page<K> page) {

    List data = null;
    // try named query
    Query query = getQuery(page);
    if (query != null) {
        data = query.list();
    }
    else {
        // try filter, example and criteria builders
        Criteria criteria = getCriteria(page);
        ResultTransformer rt = ((CriteriaImpl) criteria).getResultTransformer(); 
        criteria.setProjection(Projections.rowCount());
         page.setCount(((Long) criteria.uniqueResult()).intValue());
        // reset criteria
        criteria.setProjection(null);
        criteria.setResultTransformer(rt);
        // set start index and page size
        criteria.setFirstResult(page.getStartIndex())
            .setMaxResults(page.getPageSize());
        applyOrder(page, criteria);
        // run it
        criteria.setCacheable(cachePageQueries);
        data = criteria.list();
    }

    page.setData(data);

    return page;
}
项目:jdal    文件:HibernateUtils.java   
/**
 * Return a existing alias for propertyPath on Criteria or null if none
 * @param criteria Hibernate Criteria
 * @param propertyPath the property path
 * @return alias or null if none
 */
public static String findAliasForPropertyPath(Criteria criteria, String propertyPath) {
    CriteriaImpl c = (CriteriaImpl) criteria;
    Iterator iter = c.iterateSubcriteria();
    while (iter.hasNext()) {
        Subcriteria subCriteria = (Subcriteria) iter.next();
        if (propertyPath.equals(subCriteria.getPath()));
            return subCriteria.getAlias();
    }
    // not found
    return null; 
}
项目:cacheonix-core    文件:DetachedCriteria.java   
protected DetachedCriteria(String entityName) {
    impl = new CriteriaImpl(entityName, null);
    criteria = impl;
}
项目:cacheonix-core    文件:DetachedCriteria.java   
protected DetachedCriteria(String entityName, String alias) {
    impl = new CriteriaImpl(entityName, alias, null);
    criteria = impl;
}
项目:cacheonix-core    文件:DetachedCriteria.java   
protected DetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    this.impl = impl;
    this.criteria = criteria;
}
项目:cacheonix-core    文件:DetachedCriteria.java   
CriteriaImpl getCriteriaImpl() {
    return impl;
}
项目:cacheonix-core    文件:CriteriaQueryTranslator.java   
public CriteriaImpl getRootCriteria() {
    return rootCriteria;
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzDetachedCriteria.java   
public JazzDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:opennmszh    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(String entityName) {
    this(new CriteriaImpl(entityName, null));
}
项目:opennmszh    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(String entityName, String alias) {
    this(new CriteriaImpl(entityName, alias, null));
}
项目:opennmszh    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(CriteriaImpl impl) {
    super(impl, impl);
    m_impl = impl;
}
项目:opennmszh    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
    m_impl = impl;
}
项目:further-open-core    文件:HibernateDistinctIdExecutor.java   
/**
 * @param request
 * @return
 * @see edu.utah.further.core.chain.AbstractRequestHandler#process(edu.utah.further.core.api.chain.ChainRequest)
 * @see http://opensource.atlassian.com/projects/hibernate/browse/HHH-817
 */
@Override
public boolean process(final ChainRequest request)
{
    final HibernateExecReq executionReq = new HibernateExecReq(request);

    // Validate required input
    final GenericCriteria hibernateCriteria = executionReq.getResult();
    notNull(hibernateCriteria, "Expected Hibernate criteria");

    final Class<? extends PersistentEntity<?>> domainClass = executionReq
            .getRootEntity();
    final Class<? extends PersistentEntity<?>> entityClass = dao
            .getEntityClass(domainClass);

    notNull(entityClass, "Expected root entity class");

    final SessionFactory sessionFactory = executionReq.getSessionFactory();
    notNull(sessionFactory, "Expected SessionFactory");

    final ClassMetadata classMetadata = sessionFactory.getClassMetadata(entityClass);
    final String identifierName = classMetadata.getIdentifierPropertyName();
    final Type identifierType = classMetadata.getIdentifierType();

    // A hack to obtain projections out of the critieria by casting to the Hibernate
    // implementation. TODO: improve adapter to do that via interface access
    final ProjectionList projectionList = Projections.projectionList();
    final Projection existingProjection = ((CriteriaImpl) hibernateCriteria
            .getHibernateCriteria()).getProjection();

    if (existingProjection != null && !overrideExistingProjection)
    {
        return false;
    }

    if (identifierType.isComponentType())
    {
        final ComponentType componentType = (ComponentType) identifierType;
        final String[] idPropertyNames = componentType.getPropertyNames();

        // Add distinct to the first property
        projectionList.add(
                Projections.distinct(Property.forName(identifierName
                        + PROPERTY_SCOPE_CHAR + idPropertyNames[0])),
                idPropertyNames[0]);

        // Add the remaining properties to the projection list
        for (int i = 1; i < idPropertyNames.length; i++)
        {
            projectionList.add(
                    Property.forName(identifierName + PROPERTY_SCOPE_CHAR
                            + idPropertyNames[i]), idPropertyNames[i]);
        }

        hibernateCriteria.setProjection(projectionList);
        hibernateCriteria.setResultTransformer(new AliasToBeanResultTransformer(
                ReflectionUtils.findField(entityClass, identifierName).getType()));
    }
    else
    {
        // 'this' required to avoid HHH-817
        projectionList.add(Projections.distinct(Property.forName(THIS_CONTEXT
                + identifierName)));
        hibernateCriteria.setProjection(projectionList);
    }

    executionReq.setResult(hibernateCriteria);

    return false;
}
项目:OpenNMS    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(String entityName) {
    this(new CriteriaImpl(entityName, null));
}
项目:OpenNMS    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(String entityName, String alias) {
    this(new CriteriaImpl(entityName, alias, null));
}
项目:OpenNMS    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(CriteriaImpl impl) {
    super(impl, impl);
    m_impl = impl;
}
项目:OpenNMS    文件:OnmsCriteria.java   
protected OnmsDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
    m_impl = impl;
}
项目:ephesoft    文件:EphesoftCriteria.java   
/**
 * Constructor.
 * 
 * @param impl CriteriaImpl
 * @param criteria Criteria
 */
public EphesoftCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:cacheonix-core    文件:SessionImplementor.java   
/**
 * Execute a criteria query
 */
public ScrollableResults scroll(CriteriaImpl criteria, ScrollMode scrollMode);
项目:cacheonix-core    文件:SessionImplementor.java   
/**
 * Execute a criteria query
 */
public List list(CriteriaImpl criteria);
项目:omr    文件:JazzOMRDetachedCriteria.java   
/**
 * @param impl
 * @param criteria
 */
public JazzOMRDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzOMRDetachedCriteria.java   
/**
 * @param impl
 * @param criteria
 */
public JazzOMRDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl,criteria);
}
项目:omr    文件:JazzOMRDetachedCriteria.java   
/**
 * @param impl
 * @param criteria
 */
public JazzOMRDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzOMRDetachedCriteria.java   
/**
 * @param impl
 * @param criteria
 */
public JazzOMRDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}
项目:omr    文件:JazzOMRDetachedCriteria.java   
/**
 * @param impl
 * @param criteria
 */
public JazzOMRDetachedCriteria(CriteriaImpl impl, Criteria criteria) {
    super(impl, criteria);
}