[jOOQ/jOOQ#8353] Correct handling of NULL embeddable records
This commit is contained in:
parent
14c2fac8f0
commit
41e0adc7f8
@ -330,16 +330,17 @@ abstract class AbstractRecord extends AbstractStore implements Record {
|
||||
|
||||
@Override
|
||||
public final <T> void set(Field<T> field, T value) {
|
||||
if (isEmbeddable(field) && value instanceof EmbeddableRecord) {
|
||||
if (isEmbeddable(field)) {
|
||||
Field<?>[] f = embeddedFields(field);
|
||||
Object[] v = ((EmbeddableRecord) value).intoArray();
|
||||
Object[] v = value instanceof EmbeddableRecord
|
||||
? ((EmbeddableRecord) value).intoArray()
|
||||
: new Object[f.length];
|
||||
|
||||
for (int i = 0; i < f.length; i++)
|
||||
set(indexOrFail(fields, f[i]), f[i], v[i]);
|
||||
}
|
||||
else {
|
||||
else
|
||||
set(indexOrFail(fields, field), field, value);
|
||||
}
|
||||
}
|
||||
|
||||
final void set(int index, Field<?> field, Object value) {
|
||||
|
||||
@ -5337,7 +5337,7 @@ final class Tools {
|
||||
|
||||
static final boolean isEmbeddable(Field<?> field) {
|
||||
return field instanceof EmbeddableTableField
|
||||
|| field instanceof Val && ((Val<?>) field).value instanceof EmbeddableRecord;
|
||||
|| field instanceof Val && EmbeddableRecord.class.isAssignableFrom(field.getType());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@ -5391,7 +5391,7 @@ final class Tools {
|
||||
return (List<E>) Arrays.asList(((EmbeddableTableField<?, ?>) e).fields);
|
||||
}
|
||||
};
|
||||
else if (field instanceof Val && ((Val<?>) field).getValue() instanceof EmbeddableRecord)
|
||||
else if (field instanceof Val && EmbeddableRecord.class.isAssignableFrom(field.getType()))
|
||||
return new FlatteningIterator<E>(it) {
|
||||
@Override
|
||||
List<E> flatten(E e) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user