[jOOQ/jOOQ#14657] Nesting MULTISET/ROW/MULTISET/ROW with ad-hoc converters and JSON emulation results in ClassCastException
This commit is contained in:
parent
a5cc3b03ad
commit
57204a93cc
@ -278,8 +278,8 @@ final class JSONReader<R extends Record> {
|
||||
record.set(i, Base64.getDecoder().decode(s));
|
||||
}
|
||||
|
||||
// [#12155] Recurse for nested data types
|
||||
else if (multiset && field.getDataType().isMultiset())
|
||||
// [#12155] Recurse for nested MULTISET
|
||||
else if (multiset && field.getDataType().isMultiset()) {
|
||||
record.set(i, read(
|
||||
ctx,
|
||||
(AbstractRow) field.getDataType().getRow(),
|
||||
@ -287,6 +287,21 @@ final class JSONReader<R extends Record> {
|
||||
multiset,
|
||||
record.get(i)
|
||||
));
|
||||
}
|
||||
|
||||
// [#14657] Recurse for nested ROW
|
||||
else if (multiset && field.getDataType().isRecord() && record.get(i) instanceof List) {
|
||||
AbstractRow<? extends Record> actualRow = (AbstractRow) field.getDataType().getRow();
|
||||
Class<? extends Record> recordType = field.getDataType().getRecordType();
|
||||
List<Object> l = (List<Object>) record.get(i);
|
||||
patchRecord(ctx, multiset, actualRow, l);
|
||||
|
||||
record.set(i, newRecord(true, recordType, actualRow, ctx.configuration()).operate(r -> {
|
||||
r.from(l);
|
||||
r.changed(false);
|
||||
return r;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
return record;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user