Resolve values eagerly in EffectiveOpId
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/EffectiveOpId.java b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/EffectiveOpId.java
index 8a94793..f61b35e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/EffectiveOpId.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/EffectiveOpId.java
@@ -19,7 +19,9 @@
 
 package org.apache.cayenne.access.flush;
 
+import java.util.HashMap;
 import java.util.Map;
+import java.util.function.Supplier;
 
 import org.apache.cayenne.ObjectId;
 
@@ -38,7 +40,12 @@
     public EffectiveOpId(ObjectId id) {
         this.id = id;
         this.entityName = id.getEntityName();
-        this.snapshot = id.getIdSnapshot();
+        this.snapshot = new HashMap<>(id.getIdSnapshot());
+        this.snapshot.entrySet().forEach(entry -> {
+            if(entry.getValue() instanceof Supplier) {
+                entry.setValue(((Supplier) entry.getValue()).get());
+            }
+        });
     }
 
     @Override