From 806446be97147bbe0f78075fadea6e7d2941cb15 Mon Sep 17 00:00:00 2001 From: brianbrix Date: Tue, 2 Jun 2026 15:14:39 +0300 Subject: [PATCH 1/3] AMP-31112: Version history shows only current version --- .../java/org/dgfoundation/amp/onepager/util/ActivityUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java index bf316094a25..fb25c78da7b 100644 --- a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java +++ b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java @@ -212,6 +212,7 @@ public static AmpActivityVersion saveActivityNewVersion(AmpActivityVersion a, AmpActivityGroup tmpGroup = a.getAmpActivityGroup(); a = ActivityVersionUtil.cloneActivity(a); + a.setAmpActivityId(null); // Always clear the session after cloning. When running in a batch context (e.g. Excel importer), // validateAndImport executes queries with FlushMode.AUTO which can cascade-save new child entities // (fundings, etc.) into the action queue. The subsequent session.evict(oldA) then cascade-evicts From d600cbe0bfdeddec641064a5476f25030e8ae0bd Mon Sep 17 00:00:00 2001 From: brianbrix Date: Tue, 2 Jun 2026 16:01:30 +0300 Subject: [PATCH 2/3] AMP-31112: Error when saving activity --- .../org/dgfoundation/amp/onepager/util/ActivityUtil.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java index fb25c78da7b..9da500ad761 100644 --- a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java +++ b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java @@ -274,7 +274,14 @@ public static AmpActivityVersion saveActivityNewVersion(AmpActivityVersion a, session.clear(); //existing activity //previousVersion for current activity - if (group.getAmpActivityLastVersion().getAmpActivityId().equals(a.getAmpActivityId())) { + // When versioning, 'a' is the clone with null id; the group's lastVersion in the in-memory clone also + // has null id (circular reference), so we can't rely on id comparison. Always force-increment when + // creating a new version. When not versioning, fall back to the original id comparison. + boolean shouldForceIncrement = createNewVersion + || (group.getAmpActivityLastVersion() != null + && group.getAmpActivityLastVersion().getAmpActivityId() != null + && group.getAmpActivityLastVersion().getAmpActivityId().equals(a.getAmpActivityId())); + if (shouldForceIncrement) { forceVersionIncrement(session, group); } group.setAmpActivityLastVersion(a); From cb4ac6d86733a80a1d1af77af91e055c8ba833c4 Mon Sep 17 00:00:00 2001 From: brianbrix Date: Tue, 2 Jun 2026 16:20:53 +0300 Subject: [PATCH 3/3] AMP-31112: Error when saving activity --- .../dgfoundation/amp/onepager/util/ActivityUtil.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java index 9da500ad761..bf316094a25 100644 --- a/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java +++ b/amp/src/main/java/org/dgfoundation/amp/onepager/util/ActivityUtil.java @@ -212,7 +212,6 @@ public static AmpActivityVersion saveActivityNewVersion(AmpActivityVersion a, AmpActivityGroup tmpGroup = a.getAmpActivityGroup(); a = ActivityVersionUtil.cloneActivity(a); - a.setAmpActivityId(null); // Always clear the session after cloning. When running in a batch context (e.g. Excel importer), // validateAndImport executes queries with FlushMode.AUTO which can cascade-save new child entities // (fundings, etc.) into the action queue. The subsequent session.evict(oldA) then cascade-evicts @@ -274,14 +273,7 @@ public static AmpActivityVersion saveActivityNewVersion(AmpActivityVersion a, session.clear(); //existing activity //previousVersion for current activity - // When versioning, 'a' is the clone with null id; the group's lastVersion in the in-memory clone also - // has null id (circular reference), so we can't rely on id comparison. Always force-increment when - // creating a new version. When not versioning, fall back to the original id comparison. - boolean shouldForceIncrement = createNewVersion - || (group.getAmpActivityLastVersion() != null - && group.getAmpActivityLastVersion().getAmpActivityId() != null - && group.getAmpActivityLastVersion().getAmpActivityId().equals(a.getAmpActivityId())); - if (shouldForceIncrement) { + if (group.getAmpActivityLastVersion().getAmpActivityId().equals(a.getAmpActivityId())) { forceVersionIncrement(session, group); } group.setAmpActivityLastVersion(a);