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);
+
+ }
+
+}