[jOOQ/jOOQ#12413] DataTypeException in multiset with a mapped nested row
This commit is contained in:
parent
67459fff9e
commit
a26e6f7676
@ -1013,11 +1013,16 @@ abstract class AbstractRecord extends AbstractStore implements Record {
|
||||
* public for broader use...?
|
||||
*/
|
||||
protected final void from(Record source) {
|
||||
for (Field<?> field : fields.fields.fields) {
|
||||
Field<?> sourceField = source.field(field);
|
||||
if (source instanceof AbstractRecord) { AbstractRecord a = (AbstractRecord) source;
|
||||
a.new TransferRecordState<>(fields.fields.fields).apply(this);
|
||||
}
|
||||
else {
|
||||
for (Field<?> field : fields.fields.fields) {
|
||||
Field<?> sourceField = source.field(field);
|
||||
|
||||
if (sourceField != null && source.changed(sourceField))
|
||||
Tools.setValue(this, field, source, sourceField);
|
||||
if (sourceField != null && source.changed(sourceField))
|
||||
Tools.setValue(this, field, source, sourceField);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -37,6 +37,8 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.jooq.Binding;
|
||||
import org.jooq.CharacterSet;
|
||||
import org.jooq.Collation;
|
||||
@ -219,6 +221,11 @@ final class ConvertedDataType<T, U> extends AbstractDataTypeX<U> {
|
||||
else if (delegate.isMultiset() && !(object instanceof Result))
|
||||
return (U) object;
|
||||
|
||||
// [#12413] Avoid double conversion passes between Record and custom object types
|
||||
// (List is what we produce when reading XML or JSON nested data)
|
||||
else if (delegate.isRecord() && !(object instanceof Record || object instanceof List))
|
||||
return (U) object;
|
||||
|
||||
// [#3200] Try to convert arbitrary objects to T
|
||||
else
|
||||
return ((Converter<T, U>) getConverter()).from(delegate.convert(object));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user