in openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java [1162:1382]
protected void parseMemberMappingAnnotations(FieldMetaData fmd) {
FieldMapping fm = (FieldMapping) fmd;
AnnotatedElement el = (AnnotatedElement) getRepository().
getMetaDataFactory().getDefaults().getBackingMember(fmd);
MappingTag tag;
for (Annotation anno : el.getDeclaredAnnotations()) {
tag = _tags.get(anno.annotationType());
if (tag == null) {
handleUnknownMemberMappingAnnotation(fm, anno);
continue;
}
switch (tag) {
case ASSOC_OVERRIDE:
parseAssociationOverrides(fm, (AssociationOverride) anno);
break;
case ASSOC_OVERRIDES:
parseAssociationOverrides(fm, ((AssociationOverrides) anno).
value());
break;
case ATTR_OVERRIDE:
parseAttributeOverrides(fm, (AttributeOverride) anno);
break;
case ATTR_OVERRIDES:
parseAttributeOverrides(fm, ((AttributeOverrides) anno).
value());
break;
case COL:
parseColumns(fm, (jakarta.persistence.Column) anno);
break;
case COLS:
parseColumns(fm, ((Columns) anno).value());
break;
case ENUMERATED:
parseEnumerated(fm, (Enumerated) anno);
break;
case JOIN_COL:
parseJoinColumns(fm, fm.getValueInfo(), true, (JoinColumn) anno);
break;
case JOIN_COLS:
parseJoinColumns(fm, fm.getValueInfo(), true, ((JoinColumns) anno).value());
break;
case JOIN_TABLE:
parseJoinTable(fm, (JoinTable) anno);
break;
case KEY_CLASS_CRIT:
fm.getKeyMapping().getValueInfo().setUseClassCriteria
(((KeyClassCriteria) anno).value());
break;
case KEY_COL:
parseKeyColumns(fm, (KeyColumn) anno);
break;
case KEY_COLS:
parseKeyColumns(fm, ((KeyColumns) anno).value());
break;
case KEY_EMBEDDED_MAPPING:
KeyEmbeddedMapping kembed = (KeyEmbeddedMapping) anno;
parseEmbeddedMapping(fm.getKeyMapping(),
DBIdentifier.newColumn(kembed.nullIndicatorColumnName(), delimit()),
DBIdentifier.newConstant(kembed.nullIndicatorAttributeName()),
kembed.overrides());
break;
case KEY_FK:
KeyForeignKey kfk = (KeyForeignKey) anno;
parseForeignKey(fm.getKeyMapping().getValueInfo(),
kfk.name(), kfk.enabled(), kfk.deferred(),
kfk.deleteAction(), kfk.updateAction());
break;
case KEY_INDEX:
KeyIndex kidx = (KeyIndex) anno;
parseIndex(fm.getKeyMapping().getValueInfo(), kidx.name(),
kidx.enabled(), kidx.unique());
break;
case KEY_JOIN_COL:
parseKeyJoinColumns(fm, (KeyJoinColumn) anno);
break;
case KEY_JOIN_COLS:
parseKeyJoinColumns(fm, ((KeyJoinColumns) anno).value());
break;
case KEY_NONPOLY:
fm.getKeyMapping().setPolymorphic(toPolymorphicConstant
(((KeyNonpolymorphic) anno).value()));
break;
case KEY_STRAT:
fm.getKeyMapping().getValueInfo()
.setStrategy(((KeyStrategy) anno).value());
break;
case MAP_KEY_COL:
parseMapKeyColumn(fm, (MapKeyColumn) anno);
break;
case MAP_KEY_ENUMERATED:
parseMapKeyEnumerated(fm, (MapKeyEnumerated) anno);
break;
case MAP_KEY_JOIN_COL:
parseMapKeyJoinColumns(fm, (MapKeyJoinColumn) anno);
break;
case MAP_KEY_JOIN_COLS:
parseMapKeyJoinColumns(fm,
((MapKeyJoinColumns) anno).value());
break;
case PK_JOIN_COL:
parsePrimaryKeyJoinColumns(fm, (PrimaryKeyJoinColumn) anno);
break;
case PK_JOIN_COLS:
parsePrimaryKeyJoinColumns(fm,
((PrimaryKeyJoinColumns) anno).
value());
break;
case TABLE_GEN:
parseTableGenerator(el, (TableGenerator) anno);
break;
case TEMPORAL:
parseTemporal(fm, (Temporal) anno);
break;
case MAP_KEY_TEMPORAL:
parseMapKeyTemporal(fm, (MapKeyTemporal) anno);
break;
case CLASS_CRIT:
fm.getValueInfo().setUseClassCriteria
(((ClassCriteria) anno).value());
break;
case CONTAINER_TABLE:
parseContainerTable(fm, (ContainerTable) anno);
break;
case COLLECTION_TABLE:
parseCollectionTable(fm, (CollectionTable) anno);
break;
case EAGER_FETCH_MODE:
fm.setEagerFetchMode(toEagerFetchModeConstant
(((EagerFetchMode) anno).value()));
break;
case ELEM_CLASS_CRIT:
fm.getElementMapping().getValueInfo().setUseClassCriteria
(((ElementClassCriteria) anno).value());
break;
case ELEM_COL:
parseElementColumns(fm, (ElementColumn) anno);
break;
case ELEM_COLS:
parseElementColumns(fm, ((ElementColumns) anno).value());
break;
case ELEM_EMBEDDED_MAPPING:
ElementEmbeddedMapping ee = (ElementEmbeddedMapping) anno;
parseEmbeddedMapping(fm.getElementMapping(),
DBIdentifier.newConstant(ee.nullIndicatorAttributeName()),
DBIdentifier.newColumn(ee.nullIndicatorColumnName(), delimit()),
ee.overrides());
break;
case ELEM_FK:
ElementForeignKey efk = (ElementForeignKey) anno;
parseForeignKey(fm.getElementMapping().getValueInfo(),
efk.name(), efk.enabled(), efk.deferred(),
efk.deleteAction(), efk.updateAction());
break;
case ELEM_INDEX:
ElementIndex eidx = (ElementIndex) anno;
parseIndex(fm.getElementMapping().getValueInfo(),
eidx.name(), eidx.enabled(), eidx.unique());
break;
case ELEM_JOIN_COL:
parseElementJoinColumns(fm, (ElementJoinColumn) anno);
break;
case ELEM_JOIN_COLS:
parseElementJoinColumns(fm, ((ElementJoinColumns) anno).
value());
break;
case ELEM_NONPOLY:
fm.getElementMapping().setPolymorphic(toPolymorphicConstant
(((ElementNonpolymorphic) anno).value()));
break;
case ELEM_STRAT:
fm.getElementMapping().getValueInfo()
.setStrategy(((ElementStrategy) anno).value());
break;
case EMBEDDED_MAPPING:
parseEmbeddedMapping(fm, (EmbeddedMapping) anno);
break;
case FK:
parseForeignKey(fm.getValueInfo(), (ForeignKey) anno);
break;
case INDEX:
parseIndex(fm.getValueInfo(), (Index) anno);
break;
case NONPOLY:
fm.setPolymorphic(toPolymorphicConstant
(((Nonpolymorphic) anno).value()));
break;
case ORDER_COLUMN:
parseJavaxOrderColumn(fm,
(jakarta.persistence.OrderColumn)anno);
break;
case ORDER_COL:
parseOrderColumn(fm, (OrderColumn) anno);
break;
case STRAT:
fm.getMappingInfo().setStrategy(((Strategy) anno).value());
break;
case UNIQUE:
parseUnique(fm,
(org.apache.openjpa.persistence.jdbc.Unique) anno);
break;
case X_EMBEDDED_MAPPING:
XEmbeddedMapping embed = (XEmbeddedMapping) anno;
parseEmbeddedMapping(fm, DBIdentifier.newColumn(embed.nullIndicatorColumnName(), delimit()),
DBIdentifier.newConstant(embed.nullIndicatorAttributeName()), embed.overrides());
break;
case X_JOIN_COL:
parseXJoinColumns(fm, fm.getValueInfo(), true,
(XJoinColumn) anno);
break;
case X_JOIN_COLS:
parseXJoinColumns(fm, fm.getValueInfo(), true,
((XJoinColumns) anno).value());
break;
default:
throw new UnsupportedException(_loc.get("unsupported", fm,
anno.toString()));
}
}
}