diff --git a/ebean-api/src/main/java/io/ebean/util/AnnotationUtil.java b/ebean-api/src/main/java/io/ebean/util/AnnotationUtil.java index 238a3217d..583c99009 100644 --- a/ebean-api/src/main/java/io/ebean/util/AnnotationUtil.java +++ b/ebean-api/src/main/java/io/ebean/util/AnnotationUtil.java @@ -2,6 +2,7 @@ package io.ebean.util; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; @@ -57,10 +58,8 @@ public class AnnotationUtil { private static void typeGetAllCollect(Class clazz, Class annotationType, Set result) { while (clazz != null && clazz != Object.class) { - final A val = clazz.getAnnotation(annotationType); - if (val != null) { - result.add(val); - } + final A[] annotations = clazz.getAnnotationsByType(annotationType); + Collections.addAll(result, annotations); clazz = clazz.getSuperclass(); } } diff --git a/ebean-api/src/test/java/io/ebean/util/TestAnnotationUtil.java b/ebean-api/src/test/java/io/ebean/util/TestAnnotationUtil.java new file mode 100644 index 000000000..7d7519c03 --- /dev/null +++ b/ebean-api/src/test/java/io/ebean/util/TestAnnotationUtil.java @@ -0,0 +1,28 @@ +package io.ebean.util; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import io.ebean.annotation.Formula; + +public class TestAnnotationUtil { + + @Formula(select = "x") + @Formula(select = "y") + private static class TestObject { + + } + + @Test + public void testRepeatableAnnotation() { + + Set list = AnnotationUtil.typeGetAll(TestObject.class, Formula.class); + assertThat(list).hasSize(2); + + } + +}