[jOOQ/jOOQ#12931] DAOImpl#deleteById(Collection<T>) ignores Converter

This commit is contained in:
Lukas Eder 2022-01-25 10:33:49 +01:00
parent a0cdd63e54
commit fba49acfc8
2 changed files with 11 additions and 15 deletions

View File

@ -52,7 +52,9 @@ import static org.jooq.impl.SQLDataType.NCHAR;
import static org.jooq.impl.SQLDataType.NCLOB;
import static org.jooq.impl.SQLDataType.NVARCHAR;
import static org.jooq.impl.Tools.NO_SUPPORT_BINARY_TYPE_LENGTH;
import static org.jooq.impl.Tools.map;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Blob;
@ -586,7 +588,7 @@ implements
}
@Override
public /* final */ T convert(Object object) {
public /* non-final */ T convert(Object object) {
// [#1441] Avoid unneeded type conversions to improve performance
if (object == null)
@ -599,12 +601,12 @@ implements
@Override
public final T[] convert(Object... objects) {
return Convert.convertArray(objects, getConverter());
return map(objects, o -> convert(o), l -> (T[]) Array.newInstance(getType(), l));
}
@Override
public final List<T> convert(Collection<?> objects) {
return Convert.convert(objects, getConverter());
return map(objects, o -> convert(o));
}
@Override

View File

@ -412,31 +412,25 @@ public abstract class DAOImpl<R extends UpdatableRecord<R>, P, T> implements DAO
@SuppressWarnings("unchecked")
private /* non-final */ Condition equal(Field<?>[] pk, T id) {
if (pk.length == 1) {
if (pk.length == 1)
return ((Field<Object>) pk[0]).equal(pk[0].getDataType().convert(id));
}
// [#2573] Composite key T types are of type Record[N]
else {
else
return row(pk).equal((Record) id);
}
}
@SuppressWarnings("unchecked")
private /* non-final */ Condition equal(Field<?>[] pk, Collection<T> ids) {
if (pk.length == 1) {
if (ids.size() == 1) {
if (pk.length == 1)
if (ids.size() == 1)
return equal(pk, ids.iterator().next());
}
else {
else
return ((Field<Object>) pk[0]).in(pk[0].getDataType().convert(ids));
}
}
// [#2573] Composite key T types are of type Record[N]
else {
else
return row(pk).in(ids.toArray(EMPTY_RECORD));
}
}
private /* non-final */ Field<?>[] pk() {