From 693dfb2d5b968285f19e39f9d487ec8efea65bfb Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 21 Feb 2025 15:02:29 -0600 Subject: [PATCH] Update getExistingRecordQueryFilter to convert sourceKeyList to be in the destination foreign key field's type --- .../AbstractTableSyncTransformStep.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java index b14847f7..c8f6b82e 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java @@ -173,8 +173,21 @@ public abstract class AbstractTableSyncTransformStep extends AbstractTransformSt *******************************************************************************/ protected QQueryFilter getExistingRecordQueryFilter(RunBackendStepInput runBackendStepInput, List sourceKeyList) { - String destinationTableForeignKeyField = getSyncProcessConfig().destinationTableForeignKey; - return new QQueryFilter().withCriteria(new QFilterCriteria(destinationTableForeignKeyField, QCriteriaOperator.IN, sourceKeyList)); + String destinationTableForeignKeyFieldName = getSyncProcessConfig().destinationTableForeignKey; + String destinationTableName = getSyncProcessConfig().destinationTable; + QFieldMetaData destinationForeignKeyField = QContext.getQInstance().getTable(destinationTableName).getField(destinationTableForeignKeyFieldName); + + List 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)); }