Interface JavaType<T>
- All Superinterfaces:
Serializable
- All Known Subinterfaces:
BasicJavaType<T>
,PrimitiveJavaType<J>
,TemporalJavaType<T>
,VersionJavaType<T>
- All Known Implementing Classes:
AbstractArrayJavaType
,AbstractClassJavaType
,AbstractJavaType
,AbstractTemporalJavaType
,ArrayJavaType
,BasicCollectionJavaType
,BigDecimalJavaType
,BigIntegerJavaType
,BlobJavaType
,BooleanJavaType
,BooleanPrimitiveArrayJavaType
,ByteArrayJavaType
,ByteJavaType
,CalendarDateJavaType
,CalendarJavaType
,CalendarTimeJavaType
,CharacterArrayJavaType
,CharacterJavaType
,ClassJavaType
,ClobJavaType
,CollectionJavaType
,CompositeUserTypeJavaTypeWrapper
,CurrencyJavaType
,DateJavaType
,DoubleJavaType
,DoublePrimitiveArrayJavaType
,DurationJavaType
,DynamicModelJavaType
,EmbeddableAggregateJavaType
,EntityJavaType
,EnumJavaType
,FloatJavaType
,FloatPrimitiveArrayJavaType
,FormatMapperBasedJavaType
,GeolatteGeometryJavaType
,InetAddressJavaType
,InstantJavaType
,IntegerJavaType
,IntegerPrimitiveArrayJavaType
,JavaTypeBasicAdaptor
,JdbcDateJavaType
,JdbcTimeJavaType
,JdbcTimestampJavaType
,JsonJavaType
,JTSGeometryJavaType
,LocalDateJavaType
,LocalDateTimeJavaType
,LocaleJavaType
,LocalTimeJavaType
,LongJavaType
,LongPrimitiveArrayJavaType
,MapEntryJavaType
,NClobJavaType
,ObjectArrayJavaType
,ObjectJavaType
,OffsetDateTimeJavaType
,OffsetTimeJavaType
,PrimitiveByteArrayJavaType
,PrimitiveCharacterArrayJavaType
,SerializableJavaType
,ShortJavaType
,ShortPrimitiveArrayJavaType
,StringJavaType
,TimeZoneJavaType
,UnknownBasicJavaType
,UrlJavaType
,UserTypeJavaTypeWrapper
,UserTypeVersionJavaTypeWrapper
,UUIDJavaType
,XmlJavaType
,YearJavaType
,ZonedDateTimeJavaType
,ZoneIdJavaType
,ZoneOffsetJavaType
JavaType
is always
coupled with a JdbcType
to describe the typing aspects of an attribute
mapping from Java to JDBC.
An instance of this interface represents a certain Java class or interface which may occur as the type of a persistent property or field of an entity class.
A JavaType
decides how instances of the Java type are compared for
equality and order, and
it knows how to convert to and from
various different representations that might be requested by its partner
JdbcType
.
Every JavaType
has a MutabilityPlan
which defines how instances
of the type are cloned, and how
they are disassembled to and
assembled from their representation in the
second-level cache.
Even though it's strictly only responsible for Java aspects of the mapping, a
JavaType
usually does come with a recommendation for a friendly JdbcType
it works particularly well
with, along with a default length,
precision, and
scale for mapped columns.
A Java type may be selected when mapping an entity attribute using the
JavaType
annotation, though this is typically
unnecessary.
Custom implementations should be registered with the
JavaTypeRegistry
at startup.
The built-in implementations are registered automatically.
- See Also:
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptiondefault void
appendEncodedString
(SqlAppender sb, T value) Appends the value to the SqlAppender in an encoded format that can be decoded again byfromEncodedString(CharSequence, int, int)
.default boolean
Determine if two instances are equaldefault <X> T
coerce
(X value, JavaType.CoercionContext coercionContext) createJavaType
(ParameterizedType parameterizedType, TypeConfiguration typeConfiguration) Creates theJavaType
for the givenParameterizedType
based on thisJavaType
registered for the raw type.default int
extractHashCode
(T value) Extract a proper hash code for the given value.default String
extractLoggableRepresentation
(@Nullable T value) Extract a loggable representation of the given value.default T
fromEncodedString
(CharSequence charSequence, int start, int end) Reads the encoded value from the char sequence start index until the end index and returns the decoded value.fromString
(CharSequence string) default String
getCheckCondition
(String columnName, JdbcType jdbcType, BasicValueConverter<T, ?> converter, Dialect dialect) The check constraint that should be added to the column definition in generated DDL.default Comparator<T>
Retrieve the natural comparator for this type.default long
getDefaultSqlLength
(Dialect dialect, JdbcType jdbcType) The default column length when this Java type is mapped to a SQL data type which is parametrized by length, for exampleTypes.VARCHAR
.default int
getDefaultSqlPrecision
(Dialect dialect, JdbcType jdbcType) The default column precision when this Java type is mapped to a SQL data type which is parametrized by precision, for exampleTypes.DECIMAL
.default int
getDefaultSqlScale
(Dialect dialect, JdbcType jdbcType) The default column scale when this Java type is mapped to a SQL data type which is parametrized by scale, for exampleTypes.DECIMAL
.default T
Get this Java type's default value.default Type
Get the Java type (aType
object) described by thisJavaType
.Get the Java type (theClass
object) described by thisJavaType
.default long
The default column length when this Java type is mapped to a column of typeTypes.LONGVARCHAR
orTypes.LONGVARBINARY
.default MutabilityPlan<T>
Retrieve the mutability plan for this Java type.getRecommendedJdbcType
(JdbcTypeIndicators context) Obtain the "recommended"SQL type descriptor
for this Java type.default T
getReplacement
(T original, T target, SharedSessionContractImplementor session) default String
Get the name of the Java type.default boolean
isInstance
(Object value) Is the given value an instance of the described type?default boolean
Return true if the implementation is an instance ofTemporalJavaType
default boolean
Determines if this Java type is wider than the given Java type, that is, if the given type can be safely widened to this type.default String
<X> X
unwrap
(T value, Class<X> type, WrapperOptions options) Unwrap an instance of our handled Java type into the requested type.default boolean
Whether to useObject.equals(Object)
andObject.hashCode()
orareEqual(Object, Object)
andextractHashCode(Object)
for objects of this java type.<X> T
wrap
(X value, WrapperOptions options) Wrap a value as our handled Java type.
-
Method Details
-
getJavaType
Get the Java type (aType
object) described by thisJavaType
.- See Also:
-
getJavaTypeClass
Get the Java type (theClass
object) described by thisJavaType
.- See Also:
-
getTypeName
Get the name of the Java type. -
isInstance
Is the given value an instance of the described type?Usually just
getJavaTypeClass().
isInstance(value)
, but some descriptors need specialized semantics, for example, the descriptors forjava.sql.Date
,java.sql.Time
, andjava.sql.Timestamp
. -
getMutabilityPlan
Retrieve the mutability plan for this Java type. -
getDefaultValue
Get this Java type's default value.- Returns:
- The default value.
-
getRecommendedJdbcType
Obtain the "recommended"SQL type descriptor
for this Java type. Often, but not always, the source of this recommendation is the JDBC specification.- Parameters:
context
- Contextual information- Returns:
- The recommended SQL type descriptor
-
getDefaultSqlLength
The default column length when this Java type is mapped to a SQL data type which is parametrized by length, for exampleTypes.VARCHAR
.- Returns:
Size.DEFAULT_LENGTH
unless overridden
-
getLongSqlLength
default long getLongSqlLength()The default column length when this Java type is mapped to a column of typeTypes.LONGVARCHAR
orTypes.LONGVARBINARY
.- Returns:
Size.LONG_LENGTH
unless overridden
-
getDefaultSqlPrecision
The default column precision when this Java type is mapped to a SQL data type which is parametrized by precision, for exampleTypes.DECIMAL
.- Returns:
Size.DEFAULT_PRECISION
unless overridden
-
getDefaultSqlScale
The default column scale when this Java type is mapped to a SQL data type which is parametrized by scale, for exampleTypes.DECIMAL
.- Returns:
Size.DEFAULT_SCALE
unless overridden
-
getComparator
Retrieve the natural comparator for this type. -
extractHashCode
Extract a proper hash code for the given value.- Parameters:
value
- The value for which to extract a hash code.- Returns:
- The extracted hash code.
-
areEqual
Determine if two instances are equal- Parameters:
one
- One instanceanother
- The other instance- Returns:
- True if the two are considered equal; false otherwise.
-
useObjectEqualsHashCode
default boolean useObjectEqualsHashCode()Whether to useObject.equals(Object)
andObject.hashCode()
orareEqual(Object, Object)
andextractHashCode(Object)
for objects of this java type. This is useful to avoid mega-morphic callsites. -
extractLoggableRepresentation
Extract a loggable representation of the given value.- Parameters:
value
- The value for which to extract a loggable representation.- Returns:
- The loggable representation
-
toString
-
fromString
-
appendEncodedString
Appends the value to the SqlAppender in an encoded format that can be decoded again byfromEncodedString(CharSequence, int, int)
. Implementers do not need to care about escaping. This is similar totoString(Object)
, with the difference that the aim of this method is encoding to the appender.- Since:
- 6.2
-
fromEncodedString
Reads the encoded value from the char sequence start index until the end index and returns the decoded value. Implementers do not need to care about escaping. This is similar tofromString(CharSequence)
, with the difference that the aim of this method is decoding from a range within an existing char sequence.- Since:
- 6.2
-
unwrap
Unwrap an instance of our handled Java type into the requested type.As an example, if this is a
JavaType<Integer>
and we are asked to unwrap theInteger value
as aLong
, we would return something likeLong.valueOf( value.longValue() )
.Intended use is during
PreparedStatement
binding.- Type Parameters:
X
- The conversion type.- Parameters:
value
- The value to unwraptype
- The type as which to unwrapoptions
- The options- Returns:
- The unwrapped value.
-
wrap
Wrap a value as our handled Java type.Intended use is during
ResultSet
extraction.- Type Parameters:
X
- The conversion type.- Parameters:
value
- The value to wrap.options
- The options- Returns:
- The wrapped value.
-
isWider
Determines if this Java type is wider than the given Java type, that is, if the given type can be safely widened to this type. -
coerce
-
createJavaType
@Incubating default JavaType<T> createJavaType(ParameterizedType parameterizedType, TypeConfiguration typeConfiguration) Creates theJavaType
for the givenParameterizedType
based on thisJavaType
registered for the raw type.- Since:
- 6.1
-
isTemporalType
default boolean isTemporalType()Return true if the implementation is an instance ofTemporalJavaType
- Returns:
- true if it is an instance of
TemporalJavaType
; false otherwise
-
getCheckCondition
@Incubating default String getCheckCondition(String columnName, JdbcType jdbcType, BasicValueConverter<T, ?> converter, Dialect dialect) The check constraint that should be added to the column definition in generated DDL.
-