public class EnumType<T extends Enum> extends Object implements EnhancedUserType, DynamicParameterizedType, LoggableUserType, TypeConfigurationAware, Serializable
Value type mapper for enumerations.
Generally speaking, the proper configuration is picked up from the annotations associated with the mapped attribute.
There are a few configuration parameters understood by this type mapper:<ul>
<li>
<strong>enumClass</strong> - Names the enumeration class.
</li>
<li>
<strong>useNamed</strong> - Should enum be mapped via name. Default is to map as ordinal. Used when
annotations are not used (otherwise EnumType
is used).
</li>
<li>
<strong>type</strong> - Identifies the JDBC type (via type code) to be used for the column.
</li>
</ul>
DynamicParameterizedType.ParameterType
Modifier and Type | Field and Description |
---|---|
static String |
ENUM |
static String |
NAMED |
static String |
TYPE |
ACCESS_TYPE, ENTITY, IS_DYNAMIC, IS_PRIMARY_KEY, PARAMETER_TYPE, PROPERTY, RETURNED_CLASS, XPROPERTY
Constructor and Description |
---|
EnumType() |
Modifier and Type | Method and Description |
---|---|
Object |
assemble(Serializable cached,
Object owner)
Reconstruct an object from the cacheable representation.
|
Object |
deepCopy(Object value)
Return a deep copy of the persistent state, stopping at entities and at
collections.
|
Serializable |
disassemble(Object value)
Transform the object into its cacheable representation.
|
boolean |
equals(Object x,
Object y)
Compare two instances of the class mapped by this type for persistence "equality".
|
Object |
fromXMLString(String xmlValue)
Parse a string representation of this value, as it appears in an XML document
|
TypeConfiguration |
getTypeConfiguration() |
int |
hashCode(Object x)
Get a hashcode for the instance, consistent with persistence "equality"
|
boolean |
isMutable()
Are objects of this type mutable?
|
boolean |
isOrdinal() |
Object |
nullSafeGet(ResultSet rs,
String[] names,
SharedSessionContractImplementor session,
Object owner)
Retrieve an instance of the mapped class from a JDBC resultset.
|
void |
nullSafeSet(PreparedStatement st,
Object value,
int index,
SharedSessionContractImplementor session)
Write an instance of the mapped class to a prepared statement.
|
String |
objectToSQLString(Object value)
Return an SQL literal representation of the value
|
Object |
replace(Object original,
Object target,
Object owner)
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.
|
Class<? extends Enum> |
returnedClass()
The class returned by <tt>nullSafeGet()</tt>.
|
void |
setParameterValues(Properties parameters)
Gets called by Hibernate to pass the configured type parameters to
the implementation.
|
void |
setTypeConfiguration(TypeConfiguration typeConfiguration) |
int[] |
sqlTypes()
Return the SQL type codes for the columns mapped by this type.
|
String |
toLoggableString(Object value,
SessionFactoryImplementor factory)
Generate a loggable string representation of the collection (value).
|
String |
toXMLString(Object value)
Return a string representation of this value, as it should appear in an XML document
|
public static final String ENUM
public static final String NAMED
public static final String TYPE
public void setParameterValues(Properties parameters)
ParameterizedType
Gets called by Hibernate to pass the configured type parameters to the implementation.
setParameterValues
in interface ParameterizedType
public int[] sqlTypes()
UserType
Return the SQL type codes for the columns mapped by this type. The codes are defined on <tt>java.sql.Types</tt>.
public Class<? extends Enum> returnedClass()
UserType
The class returned by <tt>nullSafeGet()</tt>.
returnedClass
in interface UserType
public boolean equals(Object x, Object y) throws HibernateException
UserType
Compare two instances of the class mapped by this type for persistence "equality". Equality of the persistent state.
equals
in interface UserType
HibernateException
public int hashCode(Object x) throws HibernateException
UserType
Get a hashcode for the instance, consistent with persistence "equality"
hashCode
in interface UserType
HibernateException
public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner) throws SQLException
UserType
Retrieve an instance of the mapped class from a JDBC resultset. Implementors should handle possibility of null values.
nullSafeGet
in interface UserType
rs
- a JDBC result setnames
- the column namesowner
- the containing entity @return ObjectSQLException
public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) throws HibernateException, SQLException
UserType
Write an instance of the mapped class to a prepared statement. Implementors should handle possibility of null values. A multi-column type should be written to parameters starting from <tt>index</tt>.
nullSafeSet
in interface UserType
st
- a JDBC prepared statementvalue
- the object to writeindex
- statement parameter indexHibernateException
SQLException
public Object deepCopy(Object value) throws HibernateException
UserType
Return a deep copy of the persistent state, stopping at entities and at collections. It is not necessary to copy immutable objects, or null values, in which case it is safe to simply return the argument.
deepCopy
in interface UserType
value
- the object to be cloned, which may be nullHibernateException
public boolean isMutable()
UserType
Are objects of this type mutable?
public Serializable disassemble(Object value) throws HibernateException
UserType
Transform the object into its cacheable representation. At the very least this method should perform a deep copy if the type is mutable. That may not be enough for some implementations, however; for example, associations must be cached as identifier values. (optional operation)
disassemble
in interface UserType
value
- the object to be cachedHibernateException
public Object assemble(Serializable cached, Object owner) throws HibernateException
UserType
Reconstruct an object from the cacheable representation. At the very least this method should perform a deep copy if the type is mutable. (optional operation)
assemble
in interface UserType
cached
- the object to be cachedowner
- the owner of the cached objectHibernateException
public Object replace(Object original, Object target, Object owner) throws HibernateException
UserType
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. 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.
replace
in interface UserType
original
- the value from the detached entity being mergedtarget
- the value in the managed entityHibernateException
public TypeConfiguration getTypeConfiguration()
getTypeConfiguration
in interface TypeConfigurationAware
public void setTypeConfiguration(TypeConfiguration typeConfiguration)
setTypeConfiguration
in interface TypeConfigurationAware
public String objectToSQLString(Object value)
EnhancedUserType
Return an SQL literal representation of the value
objectToSQLString
in interface EnhancedUserType
public String toXMLString(Object value)
EnhancedUserType
Return a string representation of this value, as it should appear in an XML document
toXMLString
in interface EnhancedUserType
public Object fromXMLString(String xmlValue)
EnhancedUserType
Parse a string representation of this value, as it appears in an XML document
fromXMLString
in interface EnhancedUserType
public String toLoggableString(Object value, SessionFactoryImplementor factory)
LoggableUserType
Generate a loggable string representation of the collection (value).
toLoggableString
in interface LoggableUserType
value
- The collection to be logged; guarenteed to be non-null and initialized.factory
- The factory.public boolean isOrdinal()
Copyright © 2001-2018 Red Hat, Inc. All Rights Reserved.