org.hibernate.persister.entity.SQLLoadable Java Examples

The following examples show how to use org.hibernate.persister.entity.SQLLoadable. 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 File: SQLQueryReturnProcessor.java    From lams with 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 File: SQLQueryReturnProcessor.java    From lams with 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 File: SQLQueryReturnProcessor.java    From lams with 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 File: SQLQueryReturnProcessor.java    From lams with 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 File: SQLQueryReturnProcessor.java    From lams with 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 File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 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 #7
Source File: SQLQueryParser.java    From lams with 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 #8
Source File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 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.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 #9
Source File: IgniteSqlQueryParser.java    From hibernate-ogm-ignite with GNU Lesser General Public License v2.1 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 + "]",
					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 #10
Source File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
/**
 * @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
Source File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 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 #12
Source File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 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 #13
Source File: SQLQueryParser.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 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 #14
Source File: SQLCustomQuery.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return aliasContext.getEntityPersister( alias );
}
 
Example #15
Source File: SQLQueryReturnProcessor.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public SQLLoadable getEntityPersister(String alias) {
	return ( SQLLoadable ) alias2Persister.get( alias );
}
 
Example #16
Source File: SQLCustomQuery.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return aliasContext.getEntityPersister( alias );
}
 
Example #17
Source File: IgniteSqlQueryParser.java    From hibernate-ogm-ignite with GNU Lesser General Public License v2.1 4 votes vote down vote up
@Override
public SQLLoadable getEntityPersisterByAlias(String alias) {
	return null;
}
 
Example #18
Source File: SQLQueryReturnProcessor.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
public SQLLoadable getEntityPersister(String alias) {
	return (SQLLoadable) alias2Persister.get( alias );
}
 
Example #19
Source File: IgniteSqlQueryParser.java    From hibernate-ogm-ignite with GNU Lesser General Public License v2.1 votes vote down vote up
SQLLoadable getEntityPersisterByAlias(String alias); 
Example #20
Source File: SQLQueryParser.java    From lams with GNU General Public License v2.0 votes vote down vote up
SQLLoadable getEntityPersisterByAlias(String alias); 
Example #21
Source File: SQLQueryParser.java    From cacheonix-core with GNU Lesser General Public License v2.1 votes vote down vote up
SQLLoadable getEntityPersisterByAlias(String alias);