diff --git a/srv/pom.xml b/srv/pom.xml
index dfbaf573..f0ab50e7 100644
--- a/srv/pom.xml
+++ b/srv/pom.xml
@@ -234,6 +234,7 @@
cds.gen
true
+ true
diff --git a/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java b/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java
index 1b9c32c5..8ffebe54 100644
--- a/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java
+++ b/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java
@@ -23,6 +23,7 @@
import com.sap.cds.ql.Update;
import com.sap.cds.ql.Upsert;
import com.sap.cds.ql.cqn.CqnAnalyzer;
+import com.sap.cds.ql.cqn.CqnStructuredTypeRef;
import com.sap.cds.reflect.CdsModel;
import com.sap.cds.services.ErrorStatuses;
import com.sap.cds.services.EventContext;
@@ -43,6 +44,7 @@
import cds.gen.adminservice.AdminService_;
import cds.gen.adminservice.Books;
import cds.gen.adminservice.BooksAddToOrderContext;
+import cds.gen.adminservice.BooksCovers;
import cds.gen.adminservice.Books_;
import cds.gen.adminservice.OrderItems;
import cds.gen.adminservice.OrderItems_;
@@ -293,6 +295,12 @@ public void addBooksViaCsv(CdsUpdateEventContext context, Upload upload) {
context.setResult(Arrays.asList(upload));
}
+ @Before(event = {CqnService.EVENT_CREATE, CqnService.EVENT_UPDATE, DraftService.EVENT_DRAFT_NEW, DraftService.EVENT_DRAFT_PATCH})
+ public void restoreCoversUpId(CqnStructuredTypeRef ref, BooksCovers cover) {
+ // restore up__ID, which is not provided via OData due to containment
+ cover.setUpId((String) analyzer.analyze(ref).rootKeys().get(Books.ID));
+ }
+
private Supplier notFound(String message) {
return () -> new ServiceException(ErrorStatuses.NOT_FOUND, message);
}