/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2013, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.loader.plan.spi;
import org.hibernate.persister.entity.PropertyMapping;
Defines a persister reference (either entity or collection) or a composite reference. In JPA terms this is
an "abstract schema type" when discussing JPQL or JPA Criteria queries. This models a single source of attributes
(and fetches).
Author: Steve Ebersole
/**
* Defines a persister reference (either entity or collection) or a composite reference. In JPA terms this is
* an "abstract schema type" when discussing JPQL or JPA Criteria queries. This models a single source of attributes
* (and fetches).
*
* @author Steve Ebersole
*/
public interface QuerySpace {
The uid/alias which uniquely identifies this QuerySpace. Can be used to uniquely reference this
QuerySpace elsewhere.
See Also: Returns: The uid
/**
* The uid/alias which uniquely identifies this QuerySpace. Can be used to uniquely reference this
* QuerySpace elsewhere.
*
* @return The uid
*
* @see QuerySpaces#findQuerySpaceByUid(java.lang.String)
*/
public String getUid();
Get the QuerySpaces
object that is our owner. Returns: The QuerySpaces containing this QuerySpace
/**
* Get the {@link QuerySpaces} object that is our owner.
*
* @return The QuerySpaces containing this QuerySpace
*/
public QuerySpaces getQuerySpaces();
Get the PropertyMapping
for this QuerySpace. Returns: The PropertyMapping
/**
* Get the {@link PropertyMapping} for this QuerySpace.
*
* @return The PropertyMapping
*/
public PropertyMapping getPropertyMapping();
Get the aliased column names for the specified property in the query space..
Params: - alias – - the table alias
- propertyName – - the property name
Returns: the aliased column names for the specified property
/**
* Get the aliased column names for the specified property in the query space..
*
* @return the aliased column names for the specified property
* @param alias - the table alias
* @param propertyName - the property name
*/
public String[] toAliasedColumns(String alias, String propertyName);
Enumeration of the different types of QuerySpaces we can have.
/**
* Enumeration of the different types of QuerySpaces we can have.
*/
public static enum Disposition {
We have an entity-based QuerySpace. It is castable to EntityQuerySpace
for more details. /**
* We have an entity-based QuerySpace. It is castable to {@link EntityQuerySpace} for more details.
*/
ENTITY,
We have a collection-based QuerySpace. It is castable to CollectionQuerySpace
for more details. /**
* We have a collection-based QuerySpace. It is castable to {@link CollectionQuerySpace} for more details.
*/
COLLECTION,
We have a composition-based QuerySpace. It is castable to CompositeQuerySpace
for more details. /**
* We have a composition-based QuerySpace. It is castable to {@link CompositeQuerySpace} for more details.
*/
COMPOSITE
}
What type of QuerySpace (more-specific) is this?
Returns: The enum value representing the more-specific type of QuerySpace
/**
* What type of QuerySpace (more-specific) is this?
*
* @return The enum value representing the more-specific type of QuerySpace
*/
public Disposition getDisposition();
Obtain all joins which originate from this QuerySpace, in other words, all the joins which this QuerySpace is
the left-hand-side of.
For all the joins returned here, Join.getLeftHandSide()
should point back to this QuerySpace such that
space.getJoins().forEach{ join -> join.getLeftHandSide() == space }
is true for all.
Returns: The joins which originate from this query space.
/**
* Obtain all joins which originate from this QuerySpace, in other words, all the joins which this QuerySpace is
* the left-hand-side of.
* <p/>
* For all the joins returned here, {@link Join#getLeftHandSide()} should point back to this QuerySpace such that
* <code>
* space.getJoins().forEach{ join -> join.getLeftHandSide() == space }
* </code>
* is true for all.
*
* @return The joins which originate from this query space.
*/
public Iterable<Join> getJoins();
}