Package org.hibernate.type
Class EntityType
java.lang.Object
org.hibernate.type.AbstractType
org.hibernate.type.EntityType
- All Implemented Interfaces:
Serializable,AssociationType,Type
- Direct Known Subclasses:
ManyToOneType,OneToOneType
Base for types which map associations to persistent entities.
- See Also:
Field Summary
FieldsConstructor Summary
ConstructorsModifierConstructorDescriptionprotectedEntityType(EntityType original,String superTypeEntityName) protectedEntityType(TypeConfiguration typeConfiguration,String entityName, boolean referenceToPrimaryKey,String uniqueKeyPropertyName, boolean eager, boolean unwrapProxy) Constructs the requested entity type mapping.Method Summary
Modifier and TypeMethodDescriptionintPerform aComparator-style comparison of the given values.intcompare(Object x,Object y,SessionFactoryImplementor factory) deepCopy(Object value,SessionFactoryImplementor factory) Return a deep copy of the persistent state, stopping at entities and at collections.finalStringThe name of the associated entity.The name of the associated entity.Retrieves theJoinabledefining the associated entity.intgetHashCode(Object x,SessionFactoryImplementor factory) Get a hash code, consistent with persistence "equality".protected finalObjectgetIdentifier(Object value,SessionFactoryImplementor sessionFactory) protected finalObjectgetIdentifier(Object value,SharedSessionContractImplementor session) protected finalObjectgetIdentifierEvenIfTransient(Object value,SharedSessionContractImplementor session) finalStringgetIdentifierOrUniqueKeyPropertyName(MappingContext mappingContext) The name of the property on the associated entity to which our FK refersfinalTypegetIdentifierOrUniqueKeyType(MappingContext mappingContext) Determine the type of either: the identifier if we reference the primary key of the associated entity, or the unique key to which we refer, that is, the property-ref.Get the name of a property in the owning entity that provides the join key (null if the identifier)getName()For entity types, the name correlates to the associated entity name.finalClass<?>This returns the wrong class for an entity with a proxy, or for a named entity.The name of a unique property of the associated entity that provides the join key (null if the identifier of an entity, or key of a collection)booleanAn entity type is a type of association typefinal booleanExplicitly, an entity type is an entity type ;)booleanisEqual(Object x,Object y,SessionFactoryImplementor factory) Compare two instances of the class mapped by this type for persistence "equality", that is, equality of persistent state.booleanIs the association modeled here a 1-1 according to the logical model?booleanAre objects of this type mutable with respect to the referencing object? Entities and collections are considered immutable because they manage their own internal state.protected booleanisNull(Object owner,SharedSessionContractImplementor session) abstract booleanThe nullability of the property.abstract booleanIs the association modeled here defined as a 1-1 in the database (physical model)?booleanbooleanDoes this association foreign key reference the primary key of the other table? Otherwise, it references a property-ref.final booleanTwo entities are considered the same when their instances are the same.loadByUniqueKey(String entityName,String uniqueKeyPropertyName,Object key,SharedSessionContractImplementor session) Load an instance by a unique key that is not the primary key.voidnullSafeSet(PreparedStatement st,Object value, int index, boolean[] settable,SharedSessionContractImplementor session) Bind a value represented by an instance of themapped classto the given JDBCPreparedStatement, ignoring some columns as dictated by thesettableparameter.voidnullSafeSet(PreparedStatement st,Object value, int index,SharedSessionContractImplementor session) Bind a value represented by an instance of themapped classto the given JDBCPreparedStatement, ignoring some columns as dictated by thesettableparameter.replace(Object original,Object target,SharedSessionContractImplementor session,Object owner,Map<Object, Object> copyCache) During merge, replace the existing (target) value in the entity we are merging to with a new (original) value from the detached entity we are merging.protectedTypeprotectedObjectresolve(Object value,SharedSessionContractImplementor session,Object owner) Resolve an identifier or unique key valueprotected finalObjectresolveIdentifier(Object id,SharedSessionContractImplementor session) Resolve an identifier via a load.protectedTypeConfigurationscope()toLoggableString(Object value,SessionFactoryImplementor factory) Generate a loggable representation of an instance of the value mapped by this type.toString()Generates a string representation of this type.Methods inherited from class org.hibernate.type.AbstractType
assemble,beforeAssemble,disassemble,disassemble,getHashCode,isAnyType,isCollectionType,isComponentType,isDirty,isEqual,isModified,replaceMethods inherited from class java.lang.Object
clone,equals,finalize,getClass,hashCode,notify,notifyAll,wait,wait,waitMethods inherited from interface org.hibernate.type.AssociationType
getForeignKeyDirection,isAlwaysDirtyChecked,useLHSPrimaryKeyMethods inherited from interface org.hibernate.type.Type
assemble,beforeAssemble,disassemble,disassemble,getColumnSpan,getHashCode,getReturnedClassName,getSqlTypeCodes,getTypeForEqualsHashCode,isAnyType,isCollectionType,isComponentType,isDirty,isDirty,isEqual,isModified,replace,toColumnNullness
Field Details
uniqueKeyPropertyName
Constructor Details
EntityType
protected EntityType(TypeConfiguration typeConfiguration,String entityName, boolean referenceToPrimaryKey,String uniqueKeyPropertyName, boolean eager, boolean unwrapProxy) Constructs the requested entity type mapping.EntityType
Method Details
scope
isAssociationType
public boolean isAssociationType()An entity type is a type of association type- Specified by:
isAssociationTypein interfaceType- Overrides:
isAssociationTypein classAbstractType- Returns:
- True.
isEntityType
public final boolean isEntityType()Explicitly, an entity type is an entity type ;)- Specified by:
isEntityTypein interfaceType- Overrides:
isEntityTypein classAbstractType- Returns:
- True.
isMutable
public boolean isMutable()Description copied from interface:TypeAre objects of this type mutable with respect to the referencing object? Entities and collections are considered immutable because they manage their own internal state.toString
Generates a string representation of this type.getName
For entity types, the name correlates to the associated entity name.isReferenceToPrimaryKey
public boolean isReferenceToPrimaryKey()Does this association foreign key reference the primary key of the other table? Otherwise, it references a property-ref.- Returns:
- True if this association reference the PK of the associated entity.
getRHSUniqueKeyPropertyName
Description copied from interface:AssociationTypeThe name of a unique property of the associated entity that provides the join key (null if the identifier of an entity, or key of a collection)- Specified by:
getRHSUniqueKeyPropertyNamein interfaceAssociationType
getLHSPropertyName
Description copied from interface:AssociationTypeGet the name of a property in the owning entity that provides the join key (null if the identifier)- Specified by:
getLHSPropertyNamein interfaceAssociationType
getPropertyName
getAssociatedEntityName
The name of the associated entity.- Returns:
- The associated entity name.
getAssociatedEntityName
The name of the associated entity.- Specified by:
getAssociatedEntityNamein interfaceAssociationType- Parameters:
factory- The session factory, for resolution.- Returns:
- The associated entity name.
getAssociatedJoinable
Retrieves theJoinabledefining the associated entity.- Specified by:
getAssociatedJoinablein interfaceAssociationType- Parameters:
factory- The session factory.- Returns:
- The associated joinable
- Throws:
MappingException- Generally indicates an invalid entity name.
getReturnedClass
This returns the wrong class for an entity with a proxy, or for a named entity. Theoretically it should return the proxy class, but it doesn't.The problem here is that we do not necessarily have a ref to the associated entity persister (nor to the session factory, to look it up) which is really needed to "do the right thing" here...
- Specified by:
getReturnedClassin interfaceType- Returns:
- The entity class.
nullSafeSet
public void nullSafeSet(PreparedStatement st,Object value, int index, boolean[] settable,SharedSessionContractImplementor session) throwsSQLException Description copied from interface:TypeBind a value represented by an instance of themapped classto the given JDBCPreparedStatement, ignoring some columns as dictated by thesettableparameter. Implementors should handle the possibility of null values. A multi-column type should bind parameters starting fromindex.- Specified by:
nullSafeSetin interfaceType- Parameters:
st- The JDBC prepared statement to which to bindvalue- the object to writeindex- starting parameter bind indexsettable- an array indicating which columns to bind/ignoresession- The originating session- Throws:
SQLException- An error from the JDBC driver
nullSafeSet
public void nullSafeSet(PreparedStatement st,Object value, int index,SharedSessionContractImplementor session) throwsSQLException Description copied from interface:TypeBind a value represented by an instance of themapped classto the given JDBCPreparedStatement, ignoring some columns as dictated by thesettableparameter. Implementors should handle the possibility of null values. A multi-column type should bind parameters starting fromindex.- Specified by:
nullSafeSetin interfaceType- Parameters:
st- The JDBC prepared statement to which to bindvalue- the object to writeindex- starting parameter bind indexsession- The originating session- Throws:
SQLException- An error from the JDBC driver
isSame
Two entities are considered the same when their instances are the same.- Specified by:
isSamein interfaceType- Overrides:
isSamein classAbstractType- Parameters:
x- One entity instancey- Another entity instance- Returns:
- True if x == y; false otherwise.
compare
Description copied from interface:TypePerform aComparator-style comparison of the given values.- Specified by:
comparein interfaceType- Overrides:
comparein classAbstractType- Parameters:
x- The first valuey- The second value- Returns:
- The comparison result.
- See Also:
compare
deepCopy
Description copied from interface:TypeReturn a deep copy of the persistent state, stopping at entities and at collections.replace
public Object replace(Object original,Object target,SharedSessionContractImplementor session,Object owner,Map<Object, Object> copyCache) throwsHibernateExceptionDescription copied from interface:TypeDuring merge, replace the existing (target) value in the entity we are merging to with a new (original) value from the detached entity we are merging. For immutable objects, or null values, it is safe to simply return the first parameter. For mutable objects, it is safe to return a copy of the first parameter. For objects with component values, it might make sense to recursively replace component values.- Specified by:
replacein interfaceType- Parameters:
original- the value from the detached entity being mergedtarget- the value in the managed entitysession- The originating sessionowner- The owner of the valuecopyCache- The cache of already copied/replaced values- Returns:
- the value to be merged
- Throws:
HibernateException- An error from Hibernate
getHashCode
Description copied from interface:TypeGet a hash code, consistent with persistence "equality". For most types this could simply delegate toType.getHashCode(Object).- Specified by:
getHashCodein interfaceType- Overrides:
getHashCodein classAbstractType- Parameters:
x- The value for which to retrieve a hash codefactory- The session factory- Returns:
- The hash code
isEqual
Description copied from interface:TypeCompare two instances of the class mapped by this type for persistence "equality", that is, equality of persistent state. For most types this could simply delegate toType.isEqual(Object, Object).This should always equate to some form of comparison of the value's internal state. As an example, for Java's
Dateclass, the comparison should be of its internal state, but based only on the specific part which is persistent (the timestamp, date, or time).- Specified by:
isEqualin interfaceType- Overrides:
isEqualin classAbstractType- Parameters:
x- The first valuey- The second valuefactory- The session factory- Returns:
- True if there are considered equal (see discussion above).
resolve
Resolve an identifier or unique key valuegetAssociatedEntityPersister
getIdentifierEvenIfTransient
protected final Object getIdentifierEvenIfTransient(Object value,SharedSessionContractImplementor session) throwsHibernateException - Throws:
HibernateException
getIdentifier
protected final Object getIdentifier(Object value,SharedSessionContractImplementor session) throwsHibernateException - Throws:
HibernateException
getIdentifier
protected final Object getIdentifier(Object value,SessionFactoryImplementor sessionFactory) throwsHibernateException - Throws:
HibernateException
toLoggableString
Generate a loggable representation of an instance of the value mapped by this type.- Specified by:
toLoggableStringin interfaceType- Parameters:
value- The instance to be logged.factory- The session factory.- Returns:
- The loggable string.
- Throws:
HibernateException- Generally some form of resolution problem.
isOneToOne
public abstract boolean isOneToOne()Is the association modeled here defined as a 1-1 in the database (physical model)?- Returns:
- True if a 1-1 in the database; false otherwise.
isLogicalOneToOne
public boolean isLogicalOneToOne()Is the association modeled here a 1-1 according to the logical model?- Returns:
- True if a 1-1 in the logical model; false otherwise.
getIdentifierOrUniqueKeyType
public final Type getIdentifierOrUniqueKeyType(MappingContext mappingContext) throwsMappingException Determine the type of either:- the identifier if we reference the primary key of the associated entity, or
- the unique key to which we refer, that is, the property-ref.
- Parameters:
mappingContext- The mappings context- Returns:
- The appropriate type.
- Throws:
MappingException- Generally, if unable to resolve the associated entity name or unique key property name.
getIdentifierOrUniqueKeyPropertyName
public final String getIdentifierOrUniqueKeyPropertyName(MappingContext mappingContext) throwsMappingException The name of the property on the associated entity to which our FK refers- Parameters:
mappingContext- The mappings...- Returns:
- The appropriate property name.
- Throws:
MappingException- Generally, if unable to resolve the associated entity name
isReferenceToIdentifierProperty
public boolean isReferenceToIdentifierProperty()isNullable
public abstract boolean isNullable()The nullability of the property.- Returns:
- The nullability of the property.
resolveIdentifier
protected final Object resolveIdentifier(Object id,SharedSessionContractImplementor session) throwsHibernateException Resolve an identifier via a load.- Parameters:
id- The entity id to resolvesession- The originating session.- Returns:
- The resolved identifier (i.e., loaded entity).
- Throws:
HibernateException- Indicates problems performing the load.
isNull
loadByUniqueKey
public Object loadByUniqueKey(String entityName,String uniqueKeyPropertyName,Object key,SharedSessionContractImplementor session) throwsHibernateException Load an instance by a unique key that is not the primary key.- Parameters:
entityName- The name of the entity to loaduniqueKeyPropertyName- The name of the property defining the unique key.key- The unique key property value.session- The originating session.- Returns:
- The loaded entity
- Throws:
HibernateException- generally indicates problems performing the load.
requireIdentifierOrUniqueKeyType