diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java index 292371f1e1..829776920a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java @@ -542,6 +542,14 @@ final class FieldMapsForInsert extends AbstractQueryPart { Set> overlapping = null; for (Entry, List>> entry : values.entrySet()) { + // [#2530] [#6124] [#10481] TODO: Refactor and optimise these flattening algorithms + if (entry.getKey().getDataType().isEmbeddable()) { + List>> value = new ArrayList<>(entry.getValue().size()); + + for (Field f : entry.getValue()) + value.add(flatten(f).iterator()); + + for (Field key : flatten(entry.getKey())) { @@ -551,23 +559,17 @@ final class FieldMapsForInsert extends AbstractQueryPart { + { + List> list = new ArrayList<>(entry.getValue().size()); + for (Iterator> v : value) + list.add(v.hasNext() ? v.next() : null); - - - - - - - - - - - - - - - + result.put(key, list); + } + } + } + else result.put(entry.getKey(), entry.getValue()); }