diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java index dc2324ec5e..0be909e60b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java @@ -486,6 +486,24 @@ public class DefaultRecordMapper implements RecordMapperget()) { + typeClassifier = kClasses + .call("getPrimaryConstructor", typeClassifier) + .call("getParameters") + + // kotlin value classes are required to have exactly 1 parameter + .call("get", 0) + .call("getType") + .call("getClassifier") + .get(); + } + } + + // [#14283] KClass.isValue() was added in kotlin 1.5 only + catch (ReflectException ignore) {} + // [#8578] If the constructor parameter is a KTypeParameter, we need an additional step to // extract the first upper bounds' classifier, which (hopefully) is a KClass parameterTypes[i] = (Class) getJavaClass.invoke(