diff --git a/src/main/java/org/hibernate/annotations/common/annotationfactory/AnnotationProxy.java b/src/main/java/org/hibernate/annotations/common/annotationfactory/AnnotationProxy.java index 0f08185..c0bf442 100644 --- a/src/main/java/org/hibernate/annotations/common/annotationfactory/AnnotationProxy.java +++ b/src/main/java/org/hibernate/annotations/common/annotationfactory/AnnotationProxy.java @@ -9,6 +9,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -72,7 +73,19 @@ else if ( m.getDefaultValue() != null ) { if ( processedValuesFromDescriptor != descriptor.numberOfElements() ) { throw new RuntimeException( "Trying to instanciate " + annotationType + " with unknown elements" ); } - return result; + return toSmallMap( result ); + } + + static Map toSmallMap(Map map) { + switch ( map.size() ) { + case 0: + return Collections.emptyMap(); + case 1: + Map.Entry entry = map.entrySet().iterator().next(); + return Collections.singletonMap( entry.getKey(), entry.getValue() ); + default: + return map; + } } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {