Class ConvertedBasicTypeImpl<J>
- All Implemented Interfaces:
BasicType<J>
,Type<J>
,Serializable
,BasicValuedMapping
,Bindable
,JdbcMapping
,JdbcMappingContainer
,MappingModelExpressible
,MappingType
,SqlExpressible
,ValueMapping
,BasicDomainType<J>
,DomainType<J>
,SimpleDomainType<J>
,BindableType<J>
,OutputableType<J>
,ReturnableType<J>
,SqmExpressible<J>
,AdjustableBasicType<J>
,BasicType<J>
,ConvertedBasicType<J>
,JavaTypedExpressible
,ProcedureParameterExtractionAware<J>
,ProcedureParameterNamedBinder<J>
,Type
- Direct Known Subclasses:
CustomMutabilityConvertedBasicTypeImpl
,DiscriminatorTypeImpl
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.Bindable
Bindable.JdbcValuesBiConsumer<X,
Y>, Bindable.JdbcValuesConsumer Nested classes/interfaces inherited from interface jakarta.persistence.metamodel.Type
Type.PersistenceType
-
Field Summary
-
Constructor Summary
ConstructorDescriptionConvertedBasicTypeImpl
(String name, String description, JdbcType jdbcType, BasicValueConverter<J, ?> converter) ConvertedBasicTypeImpl
(String name, JdbcType jdbcType, BasicValueConverter<J, ?> converter) -
Method Summary
Modifier and TypeMethodDescriptionfinal Object
assemble
(Serializable cached, SharedSessionContractImplementor session, Object owner) Reconstruct the object from its disassembled state.final void
beforeAssemble
(Serializable cached, SharedSessionContractImplementor session) Called before assembling a query result set from the query cache, to allow batch fetching of entities missing from the second-level cache.boolean
Can the given instance of this type actually perform the parameter value extractions?boolean
Can the given instance of this type actually set the parameter value by namefinal int
Perform aComparator
-style comparison of the given values.final Object
deepCopy
(Object value, SessionFactoryImplementor factory) Return a deep copy of the persistent state, stopping at entities and at collections.disassemble
(Object value, SharedSessionContractImplementor session) Breaks down a value ofJ
into its simple pieces.final Serializable
disassemble
(Object value, SharedSessionContractImplementor session, Object owner) Return a disassembled representation of the object.extract
(CallableStatement statement, int startIndex, SharedSessionContractImplementor session) Perform the extractionextract
(CallableStatement statement, String paramName, SharedSessionContractImplementor session) Perform the extractionfinal int
getColumnSpan
(Mapping mapping) How many columns are used to persist this type?int
Get a hash code, consistent with persistence "equality".final int
getHashCode
(Object x, SessionFactoryImplementor factory) Get a hash code, consistent with persistence "equality".The descriptor for the Java type represented by this expressible typeJavaType<?>
The strategy for formatting values of this expressible type to a SQL literal.final JdbcType
Descriptor for the SQL type mapped by this type.The strategy for binding values of this expressible type to JDBCPreparedStatement
s andCallableStatement
s.The strategy for extracting values of this expressible type from JDBC ResultSets, CallableStatements, etcprotected MutabilityPlan<J>
getName()
Returns the abbreviated name of the type.String[]
Get the names under which this type should be registered in the type registry.final Class
The class handled by this type.final int[]
getSqlTypeCodes
(Mapping mapping) Returns the converter that this basic type uses for transforming from the domain type, to the relational type, ornull
if there is no conversion.final boolean
Return true if the implementation is castable toAnyType
.final boolean
Return true if the implementation is castable toAssociationType
.final boolean
Return true if the implementation is castable toCollectionType
.final boolean
Return true if the implementation is castable toCompositeType
.protected final boolean
final boolean
isDirty
(Object old, Object current, boolean[] checkable, SharedSessionContractImplementor session) Should the parent be considered dirty, given both the old and current value?final boolean
isDirty
(Object old, Object current, SharedSessionContractImplementor session) Should the parent be considered dirty, given both the old and current value?final boolean
Return true if the implementation is castable toEntityType
.boolean
Compare two instances of the class mapped by this type for persistence "equality", that is, equality of persistent state.final boolean
isEqual
(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.final boolean
isModified
(Object oldHydratedState, Object currentState, boolean[] checkable, SharedSessionContractImplementor session) Has the value been modified compared to the current database state? The difference between this and theType.isDirty(java.lang.Object, java.lang.Object, org.hibernate.engine.spi.SharedSessionContractImplementor)
methods is that here we need to account for "partially" built values.final boolean
Are objects of this type mutable with respect to the referencing object? Entities and collections are considered immutable because they manage their own internal state.final boolean
Compare two instances of the class mapped by this type for persistence "equality", that is, equality of persistent state, taking a shortcut for entity references.void
nullSafeSet
(CallableStatement st, J value, String name, SharedSessionContractImplementor session) Bind a value to the JDBC prepared statement, ignoring some columns as dictated by the 'settable' parameter.final void
nullSafeSet
(PreparedStatement st, Object value, int index, boolean[] settable, SharedSessionContractImplementor session) Bind a value represented by an instance of themapped class
to the given JDBCPreparedStatement
, ignoring some columns as dictated by thesettable
parameter.final void
nullSafeSet
(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) Bind a value represented by an instance of themapped class
to the given JDBCPreparedStatement
, ignoring some columns as dictated by thesettable
parameter.final Object
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.replace
(Object original, Object target, SharedSessionContractImplementor session, Object owner, Map<Object, Object> copyCache, ForeignKeyDirection foreignKeyDirection) 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.boolean[]
toColumnNullness
(Object value, Mapping mapping) Given an instance of the type, return an array ofboolean
values indicating which mapped columns would be null.final String
toLoggableString
(Object value, SessionFactoryImplementor factory) Generate a representation of the given value for logging purposes.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.hibernate.type.AdjustableBasicType
resolveIndicatedType
Methods inherited from interface org.hibernate.metamodel.model.domain.BasicDomainType
areEqual, getPersistenceType
Methods inherited from interface org.hibernate.type.BasicType
compare, forEachDisassembledJdbcValue, forEachJdbcType, forEachJdbcType, getCheckCondition, getExpressibleJavaType, getJdbcMapping, getJdbcMapping, getJdbcTypeCount, getMappedJavaType, getMappedType, getSingleJdbcMapping
Methods inherited from interface org.hibernate.metamodel.mapping.BasicValuedMapping
addToCacheKey
Methods inherited from interface org.hibernate.metamodel.mapping.Bindable
forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachDisassembledJdbcValue, forEachJdbcValue, forEachJdbcValue, forEachJdbcValue, forEachJdbcValue
Methods inherited from interface org.hibernate.metamodel.model.domain.DomainType
getSqmType, getTupleLength
Methods inherited from interface org.hibernate.metamodel.mapping.JdbcMapping
convertToDomainValue, convertToRelationalValue
Methods inherited from interface org.hibernate.metamodel.model.domain.SimpleDomainType
getBindableJavaType
Methods inherited from interface org.hibernate.query.sqm.SqmExpressible
getRelationalJavaType, getTypeName, isInstance, resolveExpressible
Methods inherited from interface org.hibernate.type.Type
disassemble, getReturnedClassName, getTypeForEqualsHashCode
Methods inherited from interface org.hibernate.metamodel.mapping.ValueMapping
treatAs
-
Field Details
-
EXTERNALIZED_PREFIX
- See Also:
-
NO_REG_KEYS
-
-
Constructor Details
-
ConvertedBasicTypeImpl
-
ConvertedBasicTypeImpl
public ConvertedBasicTypeImpl(String name, String description, JdbcType jdbcType, BasicValueConverter<J, ?> converter)
-
-
Method Details
-
getName
Description copied from interface:Type
Returns the abbreviated name of the type. -
getRegistrationKeys
Description copied from interface:BasicType
Get the names under which this type should be registered in the type registry.- Specified by:
getRegistrationKeys
in interfaceBasicType<J>
- Returns:
- The keys under which to register this type.
-
getValueConverter
Description copied from interface:JdbcMapping
Returns the converter that this basic type uses for transforming from the domain type, to the relational type, ornull
if there is no conversion.- Specified by:
getValueConverter
in interfaceBasicType<J>
- Specified by:
getValueConverter
in interfaceConvertedBasicType<J>
- Specified by:
getValueConverter
in interfaceJdbcMapping
-
getJdbcValueExtractor
Description copied from interface:JdbcMapping
The strategy for extracting values of this expressible type from JDBC ResultSets, CallableStatements, etc- Specified by:
getJdbcValueExtractor
in interfaceBasicType<J>
- Specified by:
getJdbcValueExtractor
in interfaceJdbcMapping
-
getJdbcValueBinder
Description copied from interface:JdbcMapping
The strategy for binding values of this expressible type to JDBCPreparedStatement
s andCallableStatement
s.- Specified by:
getJdbcValueBinder
in interfaceBasicType<J>
- Specified by:
getJdbcValueBinder
in interfaceJdbcMapping
-
getJdbcLiteralFormatter
Description copied from interface:JdbcMapping
The strategy for formatting values of this expressible type to a SQL literal.- Specified by:
getJdbcLiteralFormatter
in interfaceBasicType<J>
- Specified by:
getJdbcLiteralFormatter
in interfaceJdbcMapping
-
getJavaType
- Specified by:
getJavaType
in interfaceType<J>
-
getJdbcJavaType
- Specified by:
getJdbcJavaType
in interfaceJdbcMapping
-
toColumnNullness
Description copied from interface:Type
Given an instance of the type, return an array ofboolean
values indicating which mapped columns would be null.- Specified by:
toColumnNullness
in interfaceType
- Parameters:
value
- an instance of the typemapping
- The mapping abstraction- Returns:
- array indicating column nullness for a value instance
-
getJavaTypeDescriptor
Description copied from interface:JdbcMapping
The descriptor for the Java type represented by this expressible type- Specified by:
getJavaTypeDescriptor
in interfaceBasicType<J>
- Specified by:
getJavaTypeDescriptor
in interfaceJdbcMapping
-
getJdbcType
Description copied from interface:OutputableType
Descriptor for the SQL type mapped by this type.- Specified by:
getJdbcType
in interfaceJdbcMapping
- Specified by:
getJdbcType
in interfaceOutputableType<J>
-
getReturnedClass
Description copied from interface:Type
The class handled by this type.- Specified by:
getReturnedClass
in interfaceType
- Returns:
- The Java class handled by this type.
-
getColumnSpan
Description copied from interface:Type
How many columns are used to persist this type?Always the same as
getSqlTypCodes(mapping).length
.- Specified by:
getColumnSpan
in interfaceType
- Parameters:
mapping
- The mapping object :/- Returns:
- The number of columns
- Throws:
MappingException
- Generally indicates an issue accessing the passed mapping object.
-
getSqlTypeCodes
Description copied from interface:Type
Return the JDBC types codes as defined byTypes
orSqlTypes
for the columns mapped by this type.The number of elements in this array must match the return from
Type.getColumnSpan(org.hibernate.engine.spi.Mapping)
.- Specified by:
getSqlTypeCodes
in interfaceType
- Parameters:
mapping
- The mapping object :/- Returns:
- The JDBC type codes.
- Throws:
MappingException
- Generally indicates an issue accessing the passed mapping object.
-
isAssociationType
public final boolean isAssociationType()Description copied from interface:Type
Return true if the implementation is castable toAssociationType
. This does not necessarily imply that the type actually represents an association. Shortcut fortype instanceof AssociationType
.- Specified by:
isAssociationType
in interfaceType
- Returns:
- True if this type is also an
AssociationType
implementor; false otherwise.
-
isCollectionType
public final boolean isCollectionType()Description copied from interface:Type
Return true if the implementation is castable toCollectionType
. Shortcut fortype instanceof CollectionType
A
CollectionType
is additionally anAssociationType
; so if this method returns true,Type.isAssociationType()
should also return true.- Specified by:
isCollectionType
in interfaceType
- Returns:
- True if this type is also a
CollectionType
implementor; false otherwise.
-
isComponentType
public final boolean isComponentType()Description copied from interface:Type
Return true if the implementation is castable toCompositeType
. Shortcut fortype instanceof CompositeType
.A component type may own collections or associations and hence must provide certain extra functionality.
- Specified by:
isComponentType
in interfaceType
- Returns:
- True if this type is also a
CompositeType
implementor; false otherwise.
-
isEntityType
public final boolean isEntityType()Description copied from interface:Type
Return true if the implementation is castable toEntityType
. Shortcut fortype instanceof EntityType
.An
EntityType
is additionally anAssociationType
; so if this method returns true,Type.isAssociationType()
should also return true.- Specified by:
isEntityType
in interfaceType
- Returns:
- True if this type is also an
EntityType
implementor; false otherwise.
-
isAnyType
public final boolean isAnyType()Description copied from interface:Type
Return true if the implementation is castable toAnyType
. Shortcut fortype instanceof AnyType
.An
AnyType
is additionally anAssociationType
; so if this method returns true, thenType.isAssociationType()
should also return true. -
isSame
Description copied from interface:Type
Compare two instances of the class mapped by this type for persistence "equality", that is, equality of persistent state, taking a shortcut for entity references.For most types this should boil down to an equality comparison of the given values, and it's reasonable to simply delegate to
Type.isEqual(Object, Object)
. But for associations the semantics are a bit different. -
isEqual
Description copied from interface:Type
Compare 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
Date
class, the comparison should be of its internal state, but based only on the specific part which is persistent (the timestamp, date, or time). -
isEqual
Description copied from interface:Type
Compare 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 toequals()
.This should always equate to some form of comparison of the value's internal state. As an example, for Java's
Date
class, the comparison should be of its internal state, but based only on the specific part which is persistent (the timestamp, date, or time). -
getHashCode
Description copied from interface:Type
Get a hash code, consistent with persistence "equality". For most types this could simply delegate to the given value'shashCode
.- Specified by:
getHashCode
in interfaceType
- Parameters:
x
- The value for which to retrieve a hash code- Returns:
- The hash code
-
getHashCode
Description copied from interface:Type
Get a hash code, consistent with persistence "equality". For most types this could simply delegate toType.getHashCode(Object)
.- Specified by:
getHashCode
in interfaceType
- Parameters:
x
- The value for which to retrieve a hash codefactory
- The session factory- Returns:
- The hash code
-
compare
Description copied from interface:Type
Perform aComparator
-style comparison of the given values. -
isDirty
-
toLoggableString
Description copied from interface:Type
Generate a representation of the given value for logging purposes.- Specified by:
toLoggableString
in interfaceType
- Parameters:
value
- The value to be loggedfactory
- The session factory- Returns:
- The loggable representation
-
getMutabilityPlan
-
isMutable
public final boolean isMutable()Description copied from interface:Type
Are objects of this type mutable with respect to the referencing object? Entities and collections are considered immutable because they manage their own internal state. -
deepCopy
Description copied from interface:Type
Return a deep copy of the persistent state, stopping at entities and at collections. -
canDoExtraction
public boolean canDoExtraction()Description copied from interface:OutputableType
Can the given instance of this type actually perform the parameter value extractions?- Specified by:
canDoExtraction
in interfaceOutputableType<J>
- Returns:
true
indicates thatOutputableType.extract(java.sql.CallableStatement, int, org.hibernate.engine.spi.SharedSessionContractImplementor)
calls will not fail due toIllegalStateException
.
-
canDoSetting
public boolean canDoSetting()Description copied from interface:ProcedureParameterNamedBinder
Can the given instance of this type actually set the parameter value by name- Specified by:
canDoSetting
in interfaceProcedureParameterNamedBinder<J>
- Returns:
true
indicates that @{link #nullSafeSet} calls will not fail
-
getCastType
- Specified by:
getCastType
in interfaceJdbcMapping
-
toString
-