Source:
<code>private AnnotationMetaAttribute createMetaCollectionAttribute(DeclaredType declaredType, Element element, String fqNameOfReturnType, String collection, String targetEntity) { if ( TypeUtils.containsAnnotation( element, Constants.ELEMENT_COLLECTION ) ) { String explicitTargetEntity = getTargetEntity( element.getAnnotationMirrors() ); TypeMirror collectionElementType = TypeUtils.getCollectionElementType( declaredType, fqNameOfReturnType, explicitTargetEntity, context ); final TypeElement collectionElement = (TypeElement) context.getTypeUtils() .asElement( collectionElementType ); AccessTypeInformation accessTypeInfo = context.getAccessTypeInfo( collectionElementType.toString() ); if ( accessTypeInfo == null ) { AccessType explicitAccessType = null; if ( collectionElement != null ) { explicitAccessType = TypeUtils.determineAnnotationSpecifiedAccessType( collectionElement ); } accessTypeInfo = new AccessTypeInformation( collectionElementType.toString(), explicitAccessType, entity.getEntityAccessTypeInfo().getAccessType() ); context.addAccessTypeInformation( collectionElementType.toString(), accessTypeInfo ); } else { accessTypeInfo.setDefaultAccessType( entity.getEntityAccessTypeInfo().getAccessType() ); } } <START> if ( collection.equals( Constants.MAP_ATTRIBUTE ) ) { <END> return createAnnotationMetaAttributeForMap( declaredType, element, collection, targetEntity ); } if ( TypeUtils.containsAnnotation( element, Constants.CONVERT ) || TypeUtils.containsAnnotation( element, Constants.HIBERNATE_TYPE ) ) { return new AnnotationMetaSingleAttribute( entity, element, TypeUtils.toTypeString( declaredType ) ); } return new AnnotationMetaCollection( entity, element, collection, getElementType( declaredType, targetEntity ) ); }</code><technical_language>In _else_ branch, handle basic collection situation AttributeConverter is applied; applied a Map type collection. A simple example this: @Convert(converter = KeyValuePairAsJsonSimpleString.class) private Map<String, Object> keyValuePairs; strongly suggest if address non-map collections, address for consistent in generation of static metamodel classes</technical_language>

Target:
private AnnotationMetaAttribute createMetaCollectionAttribute(DeclaredType declaredType, Element element, String fqNameOfReturnType, String collection, String targetEntity) { if ( TypeUtils.containsAnnotation( element, Constants.ELEMENT_COLLECTION ) ) { String explicitTargetEntity = getTargetEntity( element.getAnnotationMirrors() ); TypeMirror collectionElementType = TypeUtils.getCollectionElementType( declaredType, fqNameOfReturnType, explicitTargetEntity, context ); final TypeElement collectionElement = (TypeElement) context.getTypeUtils() .asElement( collectionElementType ); AccessTypeInformation accessTypeInfo = context.getAccessTypeInfo( collectionElementType.toString() ); if ( accessTypeInfo == null ) { AccessType explicitAccessType = null; if ( collectionElement != null ) { explicitAccessType = TypeUtils.determineAnnotationSpecifiedAccessType( collectionElement ); } accessTypeInfo = new AccessTypeInformation( collectionElementType.toString(), explicitAccessType, entity.getEntityAccessTypeInfo().getAccessType() ); context.addAccessTypeInformation( collectionElementType.toString(), accessTypeInfo ); } else { accessTypeInfo.setDefaultAccessType( entity.getEntityAccessTypeInfo().getAccessType() ); } } if ( TypeUtils.containsAnnotation( element, Constants.CONVERT ) || TypeUtils.containsAnnotation( element, Constants.HIBERNATE_TYPE ) ) { return new AnnotationMetaSingleAttribute( entity, element, TypeUtils.toTypeString( declaredType ) ); } if ( collection.equals( Constants.MAP_ATTRIBUTE ) ) { return createAnnotationMetaAttributeForMap( declaredType, element, collection, targetEntity ); } return new AnnotationMetaCollection( entity, element, collection, getElementType( declaredType, targetEntity ) ); }