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