Search in sources :

Example 1 with NativeSQLQueryNonScalarReturn

use of org.hibernate.engine.query.spi.sql.NativeSQLQueryNonScalarReturn in project hibernate-orm by hibernate.

the class SQLQueryReturnProcessor method processJoinReturn.

private void processJoinReturn(NativeSQLQueryJoinReturn fetchReturn) {
    String alias = fetchReturn.getAlias();
    //		if ( alias2Persister.containsKey( alias ) || collectionAliases.contains( alias ) ) {
    if (alias2Persister.containsKey(alias) || alias2CollectionPersister.containsKey(alias)) {
        // already been processed...
        return;
    }
    String ownerAlias = fetchReturn.getOwnerAlias();
    // Make sure the owner alias is known...
    if (!alias2Return.containsKey(ownerAlias)) {
        throw new HibernateException("Owner alias [" + ownerAlias + "] is unknown for alias [" + alias + "]");
    }
    // If this return's alias has not been processed yet, do so b4 further processing of this return
    if (!alias2Persister.containsKey(ownerAlias)) {
        NativeSQLQueryNonScalarReturn ownerReturn = (NativeSQLQueryNonScalarReturn) alias2Return.get(ownerAlias);
        processReturn(ownerReturn);
    }
    SQLLoadable ownerPersister = (SQLLoadable) alias2Persister.get(ownerAlias);
    Type returnType = ownerPersister.getPropertyType(fetchReturn.getOwnerProperty());
    if (returnType.isCollectionType()) {
        String role = ownerPersister.getEntityName() + '.' + fetchReturn.getOwnerProperty();
        addCollection(role, alias, fetchReturn.getPropertyResultsMap());
    //			collectionOwnerAliases.add( ownerAlias );
    } else if (returnType.isEntityType()) {
        EntityType eType = (EntityType) returnType;
        String returnEntityName = eType.getAssociatedEntityName();
        SQLLoadable persister = getSQLLoadable(returnEntityName);
        addPersister(alias, fetchReturn.getPropertyResultsMap(), persister);
    }
}
Also used : EntityType(org.hibernate.type.EntityType) NativeSQLQueryNonScalarReturn(org.hibernate.engine.query.spi.sql.NativeSQLQueryNonScalarReturn) EntityType(org.hibernate.type.EntityType) Type(org.hibernate.type.Type) HibernateException(org.hibernate.HibernateException) SQLLoadable(org.hibernate.persister.entity.SQLLoadable)

Example 2 with NativeSQLQueryNonScalarReturn

use of org.hibernate.engine.query.spi.sql.NativeSQLQueryNonScalarReturn in project hibernate-orm by hibernate.

the class SQLQueryReturnProcessor method process.

public ResultAliasContext process() {
    // so that role returns can be more easily resolved to their owners
    for (NativeSQLQueryReturn queryReturn : queryReturns) {
        if (queryReturn instanceof NativeSQLQueryNonScalarReturn) {
            NativeSQLQueryNonScalarReturn rtn = (NativeSQLQueryNonScalarReturn) queryReturn;
            alias2Return.put(rtn.getAlias(), rtn);
            if (rtn instanceof NativeSQLQueryJoinReturn) {
                NativeSQLQueryJoinReturn fetchReturn = (NativeSQLQueryJoinReturn) rtn;
                alias2OwnerAlias.put(fetchReturn.getAlias(), fetchReturn.getOwnerAlias());
            }
        }
    }
    // Now, process the returns
    for (NativeSQLQueryReturn queryReturn : queryReturns) {
        processReturn(queryReturn);
    }
    return new ResultAliasContext();
}
Also used : NativeSQLQueryNonScalarReturn(org.hibernate.engine.query.spi.sql.NativeSQLQueryNonScalarReturn) NativeSQLQueryReturn(org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn) NativeSQLQueryJoinReturn(org.hibernate.engine.query.spi.sql.NativeSQLQueryJoinReturn)

Aggregations

NativeSQLQueryNonScalarReturn (org.hibernate.engine.query.spi.sql.NativeSQLQueryNonScalarReturn)2 HibernateException (org.hibernate.HibernateException)1 NativeSQLQueryJoinReturn (org.hibernate.engine.query.spi.sql.NativeSQLQueryJoinReturn)1 NativeSQLQueryReturn (org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn)1 SQLLoadable (org.hibernate.persister.entity.SQLLoadable)1 EntityType (org.hibernate.type.EntityType)1 Type (org.hibernate.type.Type)1