From ff6f84fbd24ff291841b92c078e4ed901a0ecd4b Mon Sep 17 00:00:00 2001 From: Vladimir Mikhaylenko Date: Thu, 10 Jul 2025 16:19:01 +0200 Subject: [PATCH 1/5] Java: Document changelog deletion --- java/change-tracking.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/java/change-tracking.md b/java/change-tracking.md index a55918d0a..04aca4940 100644 --- a/java/change-tracking.md +++ b/java/change-tracking.md @@ -273,6 +273,28 @@ Each entry in the `Changes` entity contains the following information: - The data type of the changed attribute. - The technical path from the root entity to the tracked target entity. +By default, changes remain in your database even when their entities are deleted. + +If you want to delete changelogs together with your entities you must extend relevant domain entities with the `changelog.changeTracked` aspect. + +```cds +extend model.Books with changelog.changeTracked; +``` + +If you want to enable deletion of changes per entity, you annotate the respective **domain entity** like this: + +```cds +annotate my.Orders.changes:change with @cascade: { delete }; +``` + +You can also enable cascading deletion for changelogs for all entities like this: + +```cds +annotate changelog.ChangeLink:change with @cascade: { delete }; +``` + +In both cases, deletion tracking is disabled and [event to react on changes](/java/change-tracking#reacting-on-changes) is never issued for deletions. + ## Detection of Changes The change tracking intercepts the modifying CQL statements (`Insert`, `Upsert`, `Update`, and `Delete`) and From 45d12242299e352b38a950fb442a1d63a8d2c40b Mon Sep 17 00:00:00 2001 From: Vladimir Mikhaylenko Date: Thu, 10 Jul 2025 16:21:26 +0200 Subject: [PATCH 2/5] Simpler wording --- java/change-tracking.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/change-tracking.md b/java/change-tracking.md index 04aca4940..59f4da541 100644 --- a/java/change-tracking.md +++ b/java/change-tracking.md @@ -275,19 +275,19 @@ Each entry in the `Changes` entity contains the following information: By default, changes remain in your database even when their entities are deleted. -If you want to delete changelogs together with your entities you must extend relevant domain entities with the `changelog.changeTracked` aspect. +If you want to delete changelogs together with your entities, extend relevant domain entities with the `changelog.changeTracked` aspect. ```cds extend model.Books with changelog.changeTracked; ``` -If you want to enable deletion of changes per entity, you annotate the respective **domain entity** like this: +To enable deletion of changes per entity, annotate the respective **domain entity** like this: ```cds annotate my.Orders.changes:change with @cascade: { delete }; ``` -You can also enable cascading deletion for changelogs for all entities like this: +To enable this for all entities in the model, add the following annotation to your model: ```cds annotate changelog.ChangeLink:change with @cascade: { delete }; From 8695b91eff5c4c62e1db59f11f776808d248340b Mon Sep 17 00:00:00 2001 From: Vladimir Mikhaylenko Date: Thu, 10 Jul 2025 16:23:02 +0200 Subject: [PATCH 3/5] Simpler wording --- java/change-tracking.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/java/change-tracking.md b/java/change-tracking.md index 59f4da541..73d1a2aa1 100644 --- a/java/change-tracking.md +++ b/java/change-tracking.md @@ -275,13 +275,9 @@ Each entry in the `Changes` entity contains the following information: By default, changes remain in your database even when their entities are deleted. -If you want to delete changelogs together with your entities, extend relevant domain entities with the `changelog.changeTracked` aspect. +If you want to delete changelogs together with your entities, your **domain entity** must be extended with `changelog.changeTracked` aspect. -```cds -extend model.Books with changelog.changeTracked; -``` - -To enable deletion of changes per entity, annotate the respective **domain entity** like this: +To enable deletion of changes per entity, annotate it like this: ```cds annotate my.Orders.changes:change with @cascade: { delete }; From 155533cafb7a55a080fa6145ff28cc832a4428fb Mon Sep 17 00:00:00 2001 From: Vladimir Mikhaylenko Date: Thu, 10 Jul 2025 16:28:44 +0200 Subject: [PATCH 4/5] Simpler wording --- java/change-tracking.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/java/change-tracking.md b/java/change-tracking.md index 73d1a2aa1..45a5b5477 100644 --- a/java/change-tracking.md +++ b/java/change-tracking.md @@ -280,17 +280,15 @@ If you want to delete changelogs together with your entities, your **domain enti To enable deletion of changes per entity, annotate it like this: ```cds -annotate my.Orders.changes:change with @cascade: { delete }; +annotate model.Books.changes:change with @cascade: { delete }; ``` To enable this for all entities in the model, add the following annotation to your model: ```cds -annotate changelog.ChangeLink:change with @cascade: { delete }; +annotate sap.changelog.ChangeLink:change with @cascade: { delete }; ``` -In both cases, deletion tracking is disabled and [event to react on changes](/java/change-tracking#reacting-on-changes) is never issued for deletions. - ## Detection of Changes The change tracking intercepts the modifying CQL statements (`Insert`, `Upsert`, `Update`, and `Delete`) and From e9b8adf6daab99c0bbec0f8a3a75bae653b7652d Mon Sep 17 00:00:00 2001 From: Vladimir Mikhaylenko Date: Thu, 10 Jul 2025 16:29:42 +0200 Subject: [PATCH 5/5] domain is important --- java/change-tracking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/change-tracking.md b/java/change-tracking.md index 45a5b5477..71d691542 100644 --- a/java/change-tracking.md +++ b/java/change-tracking.md @@ -277,7 +277,7 @@ By default, changes remain in your database even when their entities are deleted If you want to delete changelogs together with your entities, your **domain entity** must be extended with `changelog.changeTracked` aspect. -To enable deletion of changes per entity, annotate it like this: +To enable deletion of changes per entity, annotate domain entity like this: ```cds annotate model.Books.changes:change with @cascade: { delete };