@Override
public int[] execute() {
if(entities.isEmpty()) {
return new int[0];
}
prepare();
String[] fields = entities.get(0).getKey().getFieldNames().toArray(Arrays2.EMPTY_STRING_ARRAY);
if(fields.length == 0) {
throw new IllegalStateException("No insert fields");
}
final SqlCommand primaryCommand = context.getSqlFactory().createInsertCommand(context, em, fields);
final SqlCommand secondaryCommand =
em.hasSecondaryTable() ? context.getSqlFactory().createInsertCommand(context, em, fields, true) : null;
Map[] records = toRecords();
if(null == secondaryCommand) {
return primaryCommand.executeBatchUpdate(this, records);
}
if(null == primaryCommand) {
return secondaryCommand.executeBatchUpdate(this, records);
}
return dao.doTransaction((s) -> {
int[] result = primaryCommand.executeBatchUpdate(this, records);
secondaryCommand.executeBatchUpdate(this, records);
return result;
});
}