diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java
index fac803a103..508c1b72ee 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java
@@ -54,15 +54,8 @@ import static org.jooq.tools.reflect.Reflect.accessible;
import java.beans.ConstructorProperties;
import java.lang.invoke.MethodHandles.Lookup;
+import java.lang.reflect.*;
import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Executable;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Parameter;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Proxy;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
@@ -92,6 +85,7 @@ import org.jooq.exception.MappingException;
import org.jooq.tools.Convert;
import org.jooq.tools.StringUtils;
import org.jooq.tools.reflect.Reflect;
+import org.jooq.tools.reflect.ReflectException;
/**
* This is the default implementation for RecordMapper types.
@@ -375,6 +369,38 @@ public class DefaultRecordMapper implements RecordMapper klassType = Reflect.on("kotlin.reflect.KClass").type();
+ Method getJavaClass = JvmClassMappingKt.type().getMethod("getJavaClass", klassType);
+
+ List parameterNames = new ArrayList<>();
+ Class[] parameterTypes = new Class[parameters.size()];
+ for (int i = 0; i < parameters.size(); i++) {
+ Reflect parameter = Reflect.on(parameters.get(i));
+ parameterNames.add(parameter.call("getName").get());
+ Object typeClassifier = parameter.call("getType").call("getClassifier").get();
+ parameterTypes[i] = (Class) getJavaClass.invoke(JvmClassMappingKt.get(), typeClassifier);
+ }
+
+ Constructor javaConstructor = (Constructor) this.type.getConstructor(parameterTypes);
+ delegate = new ImmutablePOJOMapperWithParameterNames(javaConstructor, parameterNames);
+ return;
+ }
+ } catch (ReflectException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+ // do nothing
+ }
+
+
boolean mapConstructorParameterNames = TRUE.equals(configuration.settings().isMapConstructorParameterNames());