diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java index 875932cfa4..f49261efcb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java @@ -382,16 +382,18 @@ public class DefaultRecordMapper implements RecordMapper (E) Stream.of(((FieldsImpl) rowType).mapper(configuration, Object[].class).map(r)); - return; - } + if (instance == null) { + if (Stream.class.isAssignableFrom(type)) { + delegate = r -> (E) Stream.of(((FieldsImpl) rowType).mapper(configuration, Object[].class).map(r)); + return; + } - // [#1470] Return a proxy if the supplied type is an interface - // [#10071] [#11148] Primitive types are abstract! They're mapped by a ConverterProvider only later - if (Modifier.isAbstract(type.getModifiers()) && !type.isPrimitive()) { - delegate = new ProxyMapper(); - return; + // [#1470] Return a proxy if the supplied type is an interface + // [#10071] [#11148] Primitive types are abstract! They're mapped by a ConverterProvider only later + if (Modifier.isAbstract(type.getModifiers()) && !type.isPrimitive()) { + delegate = new ProxyMapper(); + return; + } } // [#2989] [#2836] Records are mapped @@ -401,7 +403,7 @@ public class DefaultRecordMapper implements RecordMapper