/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.annotations;

import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.PACKAGE;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

A type definition. Much like Type, but here we can centralize the definition under a name and refer to that name elsewhere. The plural form is TypeDefs.
Author:Emmanuel Bernard, Steve Ebersole
See Also:
/** * A type definition. Much like {@link Type}, but here we can centralize the definition under a name and * refer to that name elsewhere. * * The plural form is {@link TypeDefs}. * * @see org.hibernate.type.Type * @see org.hibernate.usertype.UserType * @see org.hibernate.usertype.CompositeUserType * * @see Type * * @author Emmanuel Bernard * @author Steve Ebersole */
@Target({TYPE, PACKAGE}) @Retention(RUNTIME) @Repeatable(TypeDefs.class) public @interface TypeDef {
The type name. This is the name that would be used in other locations.
/** * The type name. This is the name that would be used in other locations. */
String name() default "";
The type implementation class.
/** * The type implementation class. */
Class<?> typeClass();
Name a java type for which this defined type should be the default mapping.
/** * Name a java type for which this defined type should be the default mapping. */
Class<?> defaultForType() default void.class;
Any configuration parameters for this type definition.
/** * Any configuration parameters for this type definition. */
Parameter[] parameters() default {}; }