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 ClassExtractor class and implement the ClassExtractor.extractClassFromRow(org.eclipse.persistence.sessions.DataRecord, org.eclipse.persistence.sessions.Session) method.
- That method must take a database row (a DataRecord/Map) as an argument and must return the class to use for that 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 InheritanceType.SINGLE_TABLE and InheritanceType.JOINED inheritance strategies.
If a ClassExtractor is used then a DiscriminatorColumn cannot be used. A DiscriminatorColumn also cannot be used on either the root or its subclasses.
In addition, for more complex configurations using a ClassExtractor and an InheritanceType.SINGLE_TABLE strategy, the descriptor's withAllSubclasses and onlyInstances expressions should be set through the ClassExtractor's initialize method.
- See Also:
- Author:
- Guy Pelletier
-
Required Element Summary
Required Elements
-
Element Details
-
value
Class<?> valueDefines the name of the class extractor that should be applied to this entity's descriptor.
-