Update getExistingRecordQueryFilter to convert sourceKeyList to be in the destination foreign key field's type

This commit is contained in:
2025-02-21 15:02:29 -06:00
parent 05bb0ef363
commit 693dfb2d5b

View File

@ -173,8 +173,21 @@ public abstract class AbstractTableSyncTransformStep extends AbstractTransformSt
*******************************************************************************/ *******************************************************************************/
protected QQueryFilter getExistingRecordQueryFilter(RunBackendStepInput runBackendStepInput, List<Serializable> sourceKeyList) protected QQueryFilter getExistingRecordQueryFilter(RunBackendStepInput runBackendStepInput, List<Serializable> sourceKeyList)
{ {
String destinationTableForeignKeyField = getSyncProcessConfig().destinationTableForeignKey; String destinationTableForeignKeyFieldName = getSyncProcessConfig().destinationTableForeignKey;
return new QQueryFilter().withCriteria(new QFilterCriteria(destinationTableForeignKeyField, QCriteriaOperator.IN, sourceKeyList)); String destinationTableName = getSyncProcessConfig().destinationTable;
QFieldMetaData destinationForeignKeyField = QContext.getQInstance().getTable(destinationTableName).getField(destinationTableForeignKeyFieldName);
List<Serializable> sourceKeysInDestinationKeyTypeList = null;
if(sourceKeyList != null)
{
sourceKeysInDestinationKeyTypeList = new ArrayList<>();
for(Serializable sourceKey : sourceKeyList)
{
sourceKeysInDestinationKeyTypeList.add(ValueUtils.getValueAsFieldType(destinationForeignKeyField.getType(), sourceKey));
}
}
return new QQueryFilter().withCriteria(new QFilterCriteria(destinationTableForeignKeyFieldName, QCriteriaOperator.IN, sourceKeysInDestinationKeyTypeList));
} }