org.hibernate.persister.entity.Queryable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
JPMS Module-Info's for a few of the Jakarta Libraries just until they add them in themselves
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.persister.entity;
import org.hibernate.sql.SelectFragment;
/**
* Extends the generic EntityPersister contract to add
* operations required by the Hibernate Query Language
*
* @author Gavin King
*/
public interface Queryable extends Loadable, PropertyMapping, Joinable {
/**
* Is this an abstract class?
*/
public boolean isAbstract();
/**
* Is this class explicit polymorphism only?
*/
public boolean isExplicitPolymorphism();
/**
* Get the class that this class is mapped as a subclass of -
* not necessarily the direct superclass
*/
public String getMappedSuperclass();
/**
* Get the discriminator value for this particular concrete subclass,
* as a string that may be embedded in a select statement
*/
public String getDiscriminatorSQLValue();
/**
* Given a query alias and an identifying suffix, render the identifier select fragment.
*/
public String identifierSelectFragment(String name, String suffix);
/**
* Given a query alias and an identifying suffix, render the property select fragment.
*/
public String propertySelectFragment(String alias, String suffix, boolean allProperties);
public SelectFragment propertySelectFragmentFragment(String alias, String suffix, boolean allProperties);
/**
* Get the names of columns used to persist the identifier
*/
public String[] getIdentifierColumnNames();
/**
* Is the inheritance hierarchy described by this persister contained across
* multiple tables?
*
* @return True if the inheritance hierarchy is spread across multiple tables; false otherwise.
*/
public boolean isMultiTable();
/**
* Get the names of all tables used in the hierarchy (up and down) ordered such
* that deletes in the given order would not cause constraint violations.
*
* @return The ordered array of table names.
*/
public String[] getConstraintOrderedTableNameClosure();
/**
* For each table specified in {@link #getConstraintOrderedTableNameClosure()}, get
* the columns that define the key between the various hierarchy classes.
*
* The first dimension here corresponds to the table indexes returned in
* {@link #getConstraintOrderedTableNameClosure()}.
*
* The second dimension should have the same length across all the elements in
* the first dimension. If not, that would be a problem ;)
*
*/
public String[][] getContraintOrderedTableKeyColumnClosure();
/**
* Given a property name, determine the number of the table which contains the column
* to which this property is mapped.
*
* Note that this is not relative to the results from {@link #getConstraintOrderedTableNameClosure()}.
* It is relative to the subclass table name closure maintained internal to the persister (yick!).
* It is also relative to the indexing used to resolve {@link #getSubclassTableName}...
*
* @param propertyPath The name of the property.
* @return The number of the table to which the property is mapped.
*/
public int getSubclassPropertyTableNumber(String propertyPath);
/**
* Determine whether the given property is declared by our
* mapped class, our super class, or one of our subclasses...
*
* Note: the method is called 'subclass property...' simply
* for consistency sake (e.g. {@link #getSubclassPropertyTableNumber}
*
* @param propertyPath The property name.
* @return The property declarer
*/
public Declarer getSubclassPropertyDeclarer(String propertyPath);
/**
* Get the name of the table with the given index from the internal
* array.
*
* @param number The index into the internal array.
*/
public String getSubclassTableName(int number);
/**
* Is the version property included in insert statements?
*/
public boolean isVersionPropertyInsertable();
/**
* The alias used for any filter conditions (mapped where-fragments or
* enabled-filters).
*
* This may or may not be different from the root alias depending upon the
* inheritance mapping strategy.
*
* @param rootAlias The root alias
* @return The alias used for "filter conditions" within the where clause.
*/
public String generateFilterConditionAlias(String rootAlias);
/**
* Retrieve the information needed to properly deal with this entity's discriminator
* in a query.
*
* @return The entity discriminator metadata
*/
public DiscriminatorMetadata getTypeDiscriminatorMetadata();
String[][] getSubclassPropertyFormulaTemplateClosure();
public static class Declarer {
public static final Declarer CLASS = new Declarer( "class" );
public static final Declarer SUBCLASS = new Declarer( "subclass" );
public static final Declarer SUPERCLASS = new Declarer( "superclass" );
private final String name;
public Declarer(String name) {
this.name = name;
}
public String toString() {
return name;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy