Interface CompositeUserType


  • public interface CompositeUserType
    A UserType that may be dereferenced in a query. This interface allows a custom type to define "properties". These need not necessarily correspond to physical JavaBeans style properties.

    A CompositeUserType may be used in almost every way that a component may be used. It may even contain many-to-one associations.

    Implementors must be immutable and must declare a public default constructor.

    Unlike UserType, cacheability does not depend upon serializability. Instead, assemble() and disassemble provide conversion to/from a cacheable representation.
    See Also:
    for more simple cases, Type
    • Method Detail

      • getPropertyNames

        String[] getPropertyNames()
        Get the "property names" that may be used in a query.
        Returns:
        an array of "property names"
      • getPropertyTypes

        Type[] getPropertyTypes()
        Get the corresponding "property types".
        Returns:
        an array of Hibernate types
      • getPropertyValue

        Object getPropertyValue​(Object component,
                                int property)
                         throws HibernateException
        Get the value of a property.
        Parameters:
        component - an instance of class mapped by this "type"
        property -
        Returns:
        the property value
        Throws:
        HibernateException
      • setPropertyValue

        void setPropertyValue​(Object component,
                              int property,
                              Object value)
                       throws HibernateException
        Set the value of a property.
        Parameters:
        component - an instance of class mapped by this "type"
        property -
        value - the value to set
        Throws:
        HibernateException
      • returnedClass

        Class returnedClass()
        The class returned by nullSafeGet().
        Returns:
        Class
      • deepCopy

        Object deepCopy​(Object value)
                 throws HibernateException
        Return a deep copy of the persistent state, stopping at entities and at collections.
        Parameters:
        value - generally a collection element or entity field
        Returns:
        Object a copy
        Throws:
        HibernateException
      • isMutable

        boolean isMutable()
        Check if objects of this type mutable.
        Returns:
        boolean
      • disassemble

        Serializable disassemble​(Object value,
                                 SharedSessionContractImplementor session)
                          throws HibernateException
        Transform the object into its cacheable representation. At the very least this method should perform a deep copy. That may not be enough for some implementations, however; for example, associations must be cached as identifier values. (optional operation)
        Parameters:
        value - the object to be cached
        session -
        Returns:
        a cacheable representation of the object
        Throws:
        HibernateException
      • replace

        Object replace​(Object original,
                       Object target,
                       SharedSessionContractImplementor session,
                       Object owner)
                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. However, since composite user types often define component values, it might make sense to recursively replace component values in the target object.
        Throws:
        HibernateException