Subversion Repositories WebE

Rev

View as "text/plain" | Blame | Last modification | View Log | RSS feed

1
//$Id: DiscriminatorColumn.java 11282 2007-03-14 22:05:59Z epbernard $
//EJB3 Specification Copyright 2004-2006 Sun Microsystems, Inc.
package javax.persistence;

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

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import static javax.persistence.DiscriminatorType.STRING;

/**
 * Is used to define the discriminator column for the SINGLE_TABLE and JOINED inheritance
 * mapping strategies.
 *
 * The strategy and the discriminator column are only specified in the root of an entity
 * class hierarchy or subhierarchy in which a different inheritance strategy is applied
 *
 * If the DiscriminatorColumn annotation is missing, and a discriminator column is required,
 * the name of the discriminator column defaults to "DTYPE" and the discriminator type to
 * DiscriminatorType.STRING.
 *
 * @author Emmanuel Bernard
 */

@Target({TYPE}) @Retention(RUNTIME)
public @interface DiscriminatorColumn {
        /**
         * The name of column to be used for the discriminator.
         */

        String name() default "DTYPE";
        /**
         * The type of object/column to use as a class discriminator.
         * Defaults to DiscriminatorType.STRING
         */

        DiscriminatorType discriminatorType() default STRING;
        /**
         * The SQL fragment that is used when generating the DDL for the discriminator column.
         * Defaults to the provider-generated SQL to create a column of the specified
         * discriminator type.
         */

        String columnDefinition() default "";
        /**
         * The column length for String-based discriminator types. Ignored for other
         * discriminator types.
         */

        int length() default 31;
}