From c128561d45b92823d5642e4f2bf17a4564854dc2 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 26 Oct 2018 12:36:07 +0200 Subject: [PATCH] [#7953] Discover JPA annotations also from overridden super class methods --- .../java/org/jooq/impl/DefaultRecordUnmapper.java | 6 ++---- jOOQ/src/main/java/org/jooq/impl/Tools.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java index 68ccf81157..952d115fc3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java @@ -225,12 +225,10 @@ public class DefaultRecordUnmapper implements RecordUnmappe } // Use only the first applicable method or member - if (method != null) { + if (method != null) Tools.setValue(record, field, method.invoke(source)); - } - else if (members.size() > 0) { + else if (members.size() > 0) setValue(record, source, members.get(0), field); - } } return (R) record; diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 20cc885fb3..3112132cf9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -3223,7 +3223,7 @@ final class Tools { if (suffix != null) { try { - Method setter = type.getMethod("set" + suffix, method.getReturnType()); + Method setter = type.getDeclaredMethod("set" + suffix, method.getReturnType()); // Setter annotation is more relevant if (setter.getAnnotation(Column.class) == null) @@ -3369,6 +3369,15 @@ final class Tools { if ((method.getModifiers() & Modifier.STATIC) == 0) result.add(method); + do { + for (Method method : type.getDeclaredMethods()) + if ((method.getModifiers() & Modifier.STATIC) == 0) + result.add(method); + + type = type.getSuperclass(); + } + while (type != null); + return result; }