Java Code Examples for org.hibernate.persister.entity.SQLLoadable

The following examples show how to use org.hibernate.persister.entity.SQLLoadable. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 5 votes vote down vote up
private SQLLoadable getSQLLoadable(String entityName) throws MappingException {
	EntityPersister persister = factory.getEntityPersister( entityName );
	if ( !(persister instanceof SQLLoadable) ) {
		throw new MappingException( "class persister is not SQLLoadable: " + entityName );
	}
	return (SQLLoadable) persister;
}
 
Example 2
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 5 votes vote down vote up
private void processRootReturn(NativeSQLQueryRootReturn rootReturn) {
	if ( alias2Persister.containsKey( rootReturn.getAlias() ) ) {
		// already been processed...
		return;
	}

	SQLLoadable persister = getSQLLoadable( rootReturn.getReturnEntityName() );
	addPersister( rootReturn.getAlias(), rootReturn.getPropertyResultsMap(), persister );
}
 
Example 3
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 5 votes vote down vote up
private void addPersister(String alias, Map propertyResult, SQLLoadable persister) {
	alias2Persister.put( alias, persister );
	String suffix = generateEntitySuffix();
	LOG.tracev( "Mapping alias [{0}] to entity-suffix [{1}]", alias, suffix );
	alias2Suffix.put( alias, suffix );
	entityPropertyResultMaps.put( alias, propertyResult );
}
 
Example 4
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 5 votes vote down vote up
private void addCollection(String role, String alias, Map propertyResults) {
	SQLLoadableCollection collectionPersister = ( SQLLoadableCollection ) factory.getCollectionPersister( role );
	alias2CollectionPersister.put( alias, collectionPersister );
	String suffix = generateCollectionSuffix();
	LOG.tracev( "Mapping alias [{0}] to collection-suffix [{1}]", alias, suffix );
	alias2CollectionSuffix.put( alias, suffix );
	collectionPropertyResultMaps.put( alias, propertyResults );

	if ( collectionPersister.isOneToMany() || collectionPersister.isManyToMany() ) {
		SQLLoadable persister = ( SQLLoadable ) collectionPersister.getElementPersister();
		addPersister( alias, filter( propertyResults ), persister );
	}
}
 
Example 5
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 5 votes vote down vote up
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 );
		}

	}
 
Example 6
Source Project: lams   Source File: SQLQueryParser.java    License: GNU General Public License v2.0 5 votes vote down vote up
private String resolveProperties(String aliasName, String propertyName) {
	Map fieldResults = context.getPropertyResultsMapByAlias( aliasName );
	SQLLoadable persister = context.getEntityPersisterByAlias( aliasName );
	String suffix = context.getEntitySuffixByAlias( aliasName );

	if ( "*".equals( propertyName ) ) {
		if( !fieldResults.isEmpty() ) {
			throw new QueryException("Using return-propertys together with * syntax is not supported.");
		}			
		aliasesFound++;
		return persister.selectFragment( aliasName, suffix ) ;
	}
	else {

		String[] columnAliases;

		// Let return-propertys override whatever the persister has for aliases.
		columnAliases = (String[]) fieldResults.get( propertyName );
		if ( columnAliases == null ) {
			columnAliases = persister.getSubclassPropertyColumnAliases( propertyName, suffix );
		}

		if ( columnAliases == null || columnAliases.length == 0 ) {
			throw new QueryException(
					"No column name found for property [" + propertyName + "] for alias [" + aliasName + "]",
					originalQueryString
			);
		}
		if ( columnAliases.length != 1 ) {
			// TODO: better error message since we actually support composites if names are explicitly listed.
			throw new QueryException(
					"SQL queries only support properties mapped to a single column - property [" + propertyName + "] is mapped to " + columnAliases.length + " columns.",
					originalQueryString
			);
		}			
		aliasesFound++;
		return columnAliases[0];
	}
}
 
Example 7
private String resolveProperties(
		String aliasName,
		String propertyName) {
	Map fieldResults = context.getPropertyResultsMapByAlias( aliasName );
	SQLLoadable persister = context.getEntityPersisterByAlias( aliasName );
	String suffix = context.getEntitySuffixByAlias( aliasName );

	if ( "*".equals( propertyName ) ) {
		if ( !fieldResults.isEmpty() ) {
			throw new QueryException( "Using return-propertys together with * syntax is not supported." );
		}
		aliasesFound++;
		return persister.selectFragment( aliasName, suffix );
	}
	else {

		String[] columnAliases;

		// Let return-propertys override whatever the persister has for aliases.
		columnAliases = (String[]) fieldResults.get( propertyName );
		if ( columnAliases == null ) {
			columnAliases = persister.getSubclassPropertyColumnAliases( propertyName, suffix );
		}

		if ( columnAliases == null || columnAliases.length == 0 ) {
			throw new QueryException(
					"No column name found for property [" + propertyName + "] for alias [" + aliasName + "]",
					originalQuery );
		}
		if ( columnAliases.length != 1 ) {
			// TODO: better error message since we actually support composites if names are explicitly listed.
			throw new QueryException(
					"SQL queries only support properties mapped to a single column - property [" + propertyName + "] is mapped to " + columnAliases.length
							+ " columns.",
					originalQuery );
		}
		aliasesFound++;
		return columnAliases[0];
	}
}
 
Example 8
private SQLLoadable getSQLLoadable(String entityName) throws MappingException {
	EntityPersister persister = factory.getEntityPersister( entityName );
	if ( !(persister instanceof SQLLoadable) ) {
		throw new MappingException( "class persister is not SQLLoadable: " + entityName );
	}
	return (SQLLoadable) persister;
}
 
Example 9
private void processRootReturn(NativeSQLQueryRootReturn rootReturn) {
	if ( alias2Persister.containsKey( rootReturn.getAlias() ) ) {
		// already been processed...
		return;
	}

	SQLLoadable persister = getSQLLoadable( rootReturn.getReturnEntityName() );
	addPersister( rootReturn.getAlias(), rootReturn.getPropertyResultsMap(), persister );
}
 
Example 10
/**
 * @param propertyResult
 * @param persister
 */
private void addPersister(String alias, Map propertyResult, SQLLoadable persister) {
	alias2Persister.put( alias, persister );
	String suffix = generateEntitySuffix();
	log.trace( "mapping alias [" + alias + "] to entity-suffix [" + suffix + "]" );
	alias2Suffix.put( alias, suffix );
	entityPropertyResultMaps.put( alias, propertyResult );
}
 
Example 11
private void addCollection(String role, String alias, Map propertyResults) {
	SQLLoadableCollection collectionPersister = ( SQLLoadableCollection ) factory.getCollectionPersister( role );
	alias2CollectionPersister.put( alias, collectionPersister );
	String suffix = generateCollectionSuffix();
	log.trace( "mapping alias [" + alias + "] to collection-suffix [" + suffix + "]" );
	alias2CollectionSuffix.put( alias, suffix );
	collectionPropertyResultMaps.put( alias, propertyResults );

	if ( collectionPersister.isOneToMany() ) {
		SQLLoadable persister = ( SQLLoadable ) collectionPersister.getElementPersister();
		addPersister( alias, filter( propertyResults ), persister );
	}
}
 
Example 12
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 );
		}

	}
 
Example 13
Source Project: lams   Source File: SQLCustomQuery.java    License: GNU General Public License v2.0 4 votes vote down vote up
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return aliasContext.getEntityPersister( alias );
}
 
Example 14
Source Project: lams   Source File: SQLQueryReturnProcessor.java    License: GNU General Public License v2.0 4 votes vote down vote up
public SQLLoadable getEntityPersister(String alias) {
	return (SQLLoadable) alias2Persister.get( alias );
}
 
Example 15
@Override
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return null;
}
 
Example 16
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return aliasContext.getEntityPersister( alias );
}
 
Example 17
public SQLLoadable getEntityPersister(String alias) {
	return ( SQLLoadable ) alias2Persister.get( alias );
}
 
Example 18
private String resolveProperties(
		String aliasName,
        String propertyName) {
	Map fieldResults = context.getPropertyResultsMapByAlias( aliasName );
	SQLLoadable persister = context.getEntityPersisterByAlias( aliasName );
	String suffix = context.getEntitySuffixByAlias( aliasName );

	if ( "*".equals( propertyName ) ) {
		if( !fieldResults.isEmpty() ) {
			throw new QueryException("Using return-propertys together with * syntax is not supported.");
		}			
		aliasesFound++;
		return persister.selectFragment( aliasName, suffix ) ;
	}
	else {

		String[] columnAliases;

		// Let return-propertys override whatever the persister has for aliases.
		columnAliases = (String[]) fieldResults.get( propertyName );
		if ( columnAliases == null ) {
			columnAliases = persister.getSubclassPropertyColumnAliases( propertyName, suffix );
		}

		if ( columnAliases == null || columnAliases.length == 0 ) {
			throw new QueryException(
					"No column name found for property [" + propertyName + "] for alias [" + aliasName + "]",
					originalQueryString
			);
		}
		if ( columnAliases.length != 1 ) {
			// TODO: better error message since we actually support composites if names are explicitly listed.
			throw new QueryException(
					"SQL queries only support properties mapped to a single column - property [" + propertyName + "] is mapped to " + columnAliases.length + " columns.",
					originalQueryString
			);
		}			
		aliasesFound++;
		return columnAliases[0];
	}
}
 
Example 19
Source Project: lams   Source File: SQLQueryParser.java    License: GNU General Public License v2.0 votes vote down vote up
SQLLoadable getEntityPersisterByAlias(String alias); 
Example 20
SQLLoadable getEntityPersisterByAlias(String alias); 
Example 21
SQLLoadable getEntityPersisterByAlias(String alias);