org.eclipse.persistence.annotations
Annotation Type ClassExtractor
@Target(value=TYPE)
@Retention(value=RUNTIME)
public @interface ClassExtractor
A ClassExtractor allows for a user defined class indicator in place of 
 providing a discriminator column. The class has the following restrictions:
  - It must extend the org.eclipse.persistence.descriptors.ClassExtractor 
    class and implement the extractClassFromRow(Record, Session) method. 
  - That method must take a database row (a Record/Map) as an argument and 
    must return the class to use for that row. 
 
 This method will be used to decide which class to instantiate when reading 
 from the database. It is the application's responsibility to populate any 
 typing information in the database required to determine the class from the 
 row.
 
 The ClassExtractor must only be set on the root of an entity class or
 sub-hierarchy in which a different inheritance strategy is applied. The 
 ClassExtractor can only be used with the SINGLE_TABLE and JOINED inheritance 
 strategies.
 
 If a ClassExtractor is used then a DiscriminatorColumn cannot be used. A 
 ClassExtractor also cannot be used on either the root or its subclasses.
 
 In addition, for more complex configurations using a ClassExtractor and a 
 SINGLE_TABLE strategy, the descriptor's withAllSubclasses and onlyInstances 
 expressions should be set through the ClassExtractor's initialize method.
- See Also:
 org.eclipse.persistence.descriptors.InheritancePolicy.setWithAllSubclassesExpression(Expression), 
org.eclipse.persistence.descriptors.InheritancePolicy.setOnlyInstancesExpression(Expression)- Author:
 
  - Guy Pelletier
 
- Since:
 
  - EclipseLink 2.1
 
| 
Required Element Summary | 
 java.lang.Class | 
value
 
          (Required) Defines the name of the class extractor that should be 
 applied to this entity's descriptor. | 
 
value
public abstract java.lang.Class value
- (Required) Defines the name of the class extractor that should be 
 applied to this entity's descriptor.