Jakarta Persistence (JPA) Annotation Type

jakarta.persistence.DiscriminatorColumn

Implemented Interfaces:
Annotation
Target:
Type

Specifies the discriminator column for the SINGLE_TABLE and JOINED inheritance mapping strategies.

The mapping strategy and discriminator column are only specified for 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.

Example:

@Entity
@Table(name = "CUST")
@Inheritance(strategy = SINGLE_TABLE)
@DiscriminatorColumn(name = "DISC", discriminatorType = STRING, length = 20)
public class Customer { ... }

@Entity
public class ValuedCustomer extends Customer { ... }

See Also:
Since:
Jakarta Persistence (JPA) 1.0

Annotation Elements

String name
(Optional) The name of column to be used for the discriminator.
Default:
"DTYPE"
Since:
Jakarta Persistence (JPA) 1.0
(Optional) The type of object/column to use as a class discriminator.
Defaults to DiscriminatorType.STRING.
Default:
STRING
Since:
Jakarta Persistence (JPA) 1.0
(Optional) 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.

Default:
""
Since:
Jakarta Persistence (JPA) 1.0
String options
(Optional) A SQL fragment appended to the generated DDL which declares this column.
May not be used in conjunction with columnDefinition.
Default:
""
Since:
Jakarta Persistence (JPA) 3.2
int length
(Optional) The column length for String-based discriminator types.
Ignored for other discriminator types.
Default:
31
Since:
Jakarta Persistence (JPA) 1.0

Additional JDK methods inherited from java.lang.annotation.Annotation

java.lang.annotation.Annotation/annotationType(), java.lang.annotation.Annotation/equals(Object), java.lang.annotation.Annotation/hashCode(), java.lang.annotation.Annotation/toString()