org.hibernate.metamodel.model.domain.spi.ManagedTypeDescriptor 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
Hibernate's core ORM functionality
/*
* 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 http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.metamodel.model.domain.spi;
import javax.persistence.metamodel.CollectionAttribute;
import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.ManagedType;
import javax.persistence.metamodel.MapAttribute;
import javax.persistence.metamodel.SetAttribute;
import javax.persistence.metamodel.SingularAttribute;
import org.hibernate.graph.Graph;
import org.hibernate.graph.spi.SubGraphImplementor;
import org.hibernate.metamodel.model.domain.ManagedDomainType;
/**
* Hibernate extension to the JPA {@link ManagedType} descriptor
*
* @author Steve Ebersole
*/
public interface ManagedTypeDescriptor extends SimpleTypeDescriptor, ManagedDomainType {
/**
* Get this ManagedType's super type descriptor. ATM only supported for the
* {@link IdentifiableTypeDescriptor} branch of the ManagedType tree
*/
ManagedTypeDescriptor getSuperType();
/**
* The Hibernate "type name" ("entity name" - for non-POJO representations)
*/
String getName();
/**
* Make an empty sub-graph based on this type.
*
* @apiNote Note that this is *not* the same as the type's
* {@linkplain #getDefaultGraph "default" graph}
*/
SubGraphImplementor makeSubGraph();
/**
* The default graph for this type. Generally this is used to
* implement JPA's notion of a "load graph" for undefined sub-graphs.
*
* @apiNote The return is immutable ({@link Graph#isMutable()} == {@code false}) -
* use a {@linkplain Graph#makeCopy mutable copy}
*/
default SubGraphImplementor getDefaultGraph() {
throw new UnsupportedOperationException( "Not yet implemented - " + getClass().getName() );
}
/**
* Make a sub-graph based on one of this type's sub-types
*/
SubGraphImplementor makeSubGraph(Class subType);
ManagedTypeDescriptor findSubType(String subTypeName);
ManagedTypeDescriptor findSubType(Class type);
/**
* In-flight access to the managed type. Used to add attributes, etc.
* Valid only during boot.
*/
InFlightAccess getInFlightAccess();
/**
* Used during creation of the managed type object to add its attributes
*/
interface InFlightAccess {
void addAttribute(PersistentAttributeDescriptor attribute);
/**
* Called when configuration of the managed-type is complete
*/
void finishUp();
}
PersistentAttributeDescriptor findDeclaredAttribute(String name);
PersistentAttributeDescriptor findAttribute(String name);
@Override
PersistentAttributeDescriptor getDeclaredAttribute(String name);
@Override
PersistentAttributeDescriptor getAttribute(String name);
@Override
SingularPersistentAttribute getSingularAttribute(String name, Class type);
@Override
SingularPersistentAttribute getDeclaredSingularAttribute(String name, Class type);
PluralPersistentAttribute getPluralAttribute(String name);
@Override
BagPersistentAttribute getCollection(String name, Class elementType);
@Override
default CollectionAttribute getDeclaredCollection(
String name, Class elementType) {
return null;
}
@Override
default SetAttribute getSet(String name, Class elementType) {
return null;
}
@Override
default SetAttribute getDeclaredSet(String name, Class elementType) {
return null;
}
@Override
default ListAttribute getList(String name, Class elementType) {
return null;
}
@Override
default ListAttribute getDeclaredList(String name, Class elementType) {
return null;
}
@Override
default MapAttribute getMap(
String name, Class keyType, Class valueType) {
return null;
}
@Override
default MapAttribute getDeclaredMap(
String name, Class keyType, Class valueType) {
return null;
}
@Override
default SingularAttribute getSingularAttribute(String name) {
return null;
}
@Override
default SingularAttribute getDeclaredSingularAttribute(String name) {
return null;
}
@Override
default CollectionAttribute getCollection(String name) {
return null;
}
@Override
default CollectionAttribute getDeclaredCollection(String name) {
return null;
}
@Override
default SetPersistentAttribute getSet(String name) {
return null;
}
@Override
default SetPersistentAttribute getDeclaredSet(String name) {
return null;
}
@Override
default ListPersistentAttribute getList(String name) {
return null;
}
@Override
default ListPersistentAttribute getDeclaredList(String name) {
return null;
}
@Override
default MapPersistentAttribute getMap(String name) {
return null;
}
@Override
default MapPersistentAttribute getDeclaredMap(String name) {
return null;
}
}