diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java index b0c37efc..195200e7 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java @@ -151,12 +151,14 @@ public class DeleteAction QTableMetaData associatedTable = QContext.getQInstance().getTable(association.getAssociatedTableName()); QueryInput queryInput = new QueryInput(); + queryInput.setTransaction(deleteInput.getTransaction()); queryInput.setTableName(association.getAssociatedTableName()); queryInput.setFilter(filter); QueryOutput queryOutput = new QueryAction().execute(queryInput); List associatedKeys = queryOutput.getRecords().stream().map(r -> r.getValue(associatedTable.getPrimaryKeyField())).toList(); DeleteInput nextLevelDeleteInput = new DeleteInput(); + nextLevelDeleteInput.setTransaction(deleteInput.getTransaction()); nextLevelDeleteInput.setTableName(association.getAssociatedTableName()); nextLevelDeleteInput.setPrimaryKeys(associatedKeys); DeleteOutput nextLevelDeleteOutput = new DeleteAction().execute(nextLevelDeleteInput); @@ -187,6 +189,7 @@ public class DeleteAction // always fetch the records - we'll use them anyway for checking not-exist below // //////////////////////////////////////////////////////////////////////////////////// QueryInput queryInput = new QueryInput(); + queryInput.setTransaction(deleteInput.getTransaction()); queryInput.setTableName(deleteInput.getTableName()); queryInput.setFilter(new QQueryFilter(new QFilterCriteria(deleteInput.getTable().getPrimaryKeyField(), QCriteriaOperator.IN, primaryKeyList))); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -242,6 +245,7 @@ public class DeleteAction else if(!primaryKeysToLookup.isEmpty()) { QueryInput queryInput = new QueryInput(); + queryInput.setTransaction(deleteInput.getTransaction()); queryInput.setTableName(table.getName()); queryInput.setFilter(new QQueryFilter(new QFilterCriteria(table.getPrimaryKeyField(), QCriteriaOperator.IN, primaryKeysToLookup))); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -292,6 +296,7 @@ public class DeleteAction QBackendModuleInterface qModule = qBackendModuleDispatcher.getQBackendModule(deleteInput.getBackend()); QueryInput queryInput = new QueryInput(); + queryInput.setTransaction(deleteInput.getTransaction()); queryInput.setTableName(deleteInput.getTableName()); queryInput.setFilter(deleteInput.getQueryFilter()); QueryOutput queryOutput = qModule.getQueryInterface().execute(queryInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java index 8b1bcb91..5aa38bdd 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java @@ -104,7 +104,7 @@ public class InsertAction extends AbstractQActionFunction insertedRecords) throws QException + private void manageAssociations(QTableMetaData table, List insertedRecords, QBackendTransaction transaction) throws QException { for(Association association : CollectionUtils.nonNullList(table.getAssociations())) { @@ -176,6 +176,7 @@ public class InsertAction extends AbstractQActionFunction r.getValue(associatedTable.getPrimaryKeyField())).collect(Collectors.toList())); DeleteOutput deleteOutput = new DeleteAction().execute(deleteInput); @@ -332,6 +335,7 @@ public class UpdateAction { LOG.debug("Updating associatedRecords", logPair("associatedTable", associatedTable.getName()), logPair("noOfRecords", nextLevelUpdates.size())); UpdateInput nextLevelUpdateInput = new UpdateInput(); + nextLevelUpdateInput.setTransaction(updateInput.getTransaction()); nextLevelUpdateInput.setTableName(association.getAssociatedTableName()); nextLevelUpdateInput.setRecords(nextLevelUpdates); UpdateOutput nextLevelUpdateOutput = new UpdateAction().execute(nextLevelUpdateInput); @@ -341,6 +345,7 @@ public class UpdateAction { LOG.debug("Inserting associatedRecords", logPair("associatedTable", associatedTable.getName()), logPair("noOfRecords", nextLevelUpdates.size())); InsertInput nextLevelInsertInput = new InsertInput(); + nextLevelInsertInput.setTransaction(updateInput.getTransaction()); nextLevelInsertInput.setTableName(association.getAssociatedTableName()); nextLevelInsertInput.setRecords(nextLevelInserts); InsertOutput nextLevelInsertOutput = new InsertAction().execute(nextLevelInsertInput); @@ -371,6 +376,7 @@ public class UpdateAction List pkeysBeingUpdated = CollectionUtils.nonNullList(updateInput.getRecords()).stream().map(r -> r.getValue(primaryKeyField)).toList(); QueryInput queryInput = new QueryInput(); + queryInput.setTransaction(updateInput.getTransaction()); queryInput.setTableName(updateInput.getTableName()); queryInput.setFilter(new QQueryFilter(new QFilterCriteria(primaryKeyField, QCriteriaOperator.IN, pkeysBeingUpdated))); // todo - need a limit? what if too many??