org.hibernate.type

Class MutableType

Implemented Interfaces:
Serializable, Type
Known Direct Subclasses:
AbstractBynaryType, AbstractCharArrayType, CalendarDateType, CalendarType, DateType, SerializableType, TimestampType, TimeType

public abstract class MutableType
extends NullableType

Superclass for mutable nullable types
Author:
Gavin King

Method Summary

Object
deepCopy(Object value, EntityMode entityMode, SessionFactoryImplementor factory)
Return a deep copy of the persistent state, stopping at entities and at collections.
protected abstract Object
deepCopyNotNull(Object value)
boolean
isMutable()
Are objects of this type mutable.
Object
replace(Object original, Object target, SessionImplementor session, Object owner, Map 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.

Methods inherited from class org.hibernate.type.NullableType

fromStringValue, fromXMLNode, fromXMLString, get, getColumnSpan, isDirty, isEqual, isEqual, nullSafeGet, nullSafeGet, nullSafeGet, nullSafeGet, nullSafeSet, nullSafeSet, nullSafeSet, nullSafeToString, set, setToXMLNode, sqlType, sqlTypes, toColumnNullness, toLoggableString, toString, toXMLString

Methods inherited from class org.hibernate.type.AbstractType

assemble, beforeAssemble, compare, disassemble, getHashCode, getHashCode, getSemiResolvedType, hydrate, isAnyType, isAssociationType, isCollectionType, isComponentType, isDirty, isEntityType, isEqual, isEqual, isModified, isSame, isXMLElement, replace, replaceNode, resolve, semiResolve

Method Details

deepCopy

public final Object deepCopy(Object value,
                             EntityMode entityMode,
                             SessionFactoryImplementor factory)
            throws HibernateException
Return a deep copy of the persistent state, stopping at entities and at collections.
Specified by:
deepCopy in interface Type
Parameters:
value - generally a collection element or entity field
entityMode -
factory -
Returns:
Object a copy

deepCopyNotNull

protected abstract Object deepCopyNotNull(Object value)
            throws HibernateException

isMutable

public final boolean isMutable()
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.)
Specified by:
isMutable in interface Type
Returns:
boolean

replace

public Object replace(Object original,
                      Object target,
                      SessionImplementor session,
                      Object owner,
                      Map copyCache)
            throws HibernateException
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.
Specified by:
replace in interface Type
Parameters:
original - the value from the detached entity being merged
target - the value in the managed entity
Returns:
the value to be merged