实体打包问题:cuid,托管{
PackagingIssueId : String;
issueDes : String(80);
postingDocument : PostingDocument;
}
实体发布文档:cuid,托管{
PostingDocumentName : String;
packagingIssue : Association to many PackagingIssues on
packagingIssue.postingDocument = $self;
}
我有以上两个实体,我正在尝试修改“packagingIssue”,它是“一对多”的关联。
1)尝试将新的 PackagingIssue 添加到列表并运行更新查询时,出现以下错误
2023-09-14 17:36:32.155 INFO 24764 --- [nio-8080-exec-9] c.s.c.a.o.v4.processors.CdsProcessor:异常将 ChangeSet 10 标记为已取消:无效的 CQN:UPSERT 实体“com.sap”。不允许通过关联“com.sap.di.irp.postingDocument.PostingDocuments.packagingIssue”使用 di.irp.packagingIssue.PackagingIssues。 关联不会级联插入或更新。 (服务“PersistenceService$Default”,事件“UPDATE”,实体“com.sap.di.irp.postingDocument.PostingDocuments”)
2)当尝试从列表中删除现有对象并运行更新查询时,出现以下错误
2023-09-13 17:57:09.198 INFO 23132 --- [io-8080-exec-10] c.s.c.a.o.v4.processors.CdsProcessor:异常将 ChangeSet 44 标记为已取消:无效的 CQN:更新实体“com.sap”。不允许通过关联“com.sap.di.irp.postingDocument.PostingDocuments.packagingIssue”使用 di.irp.packagingIssue.PackagingIssues。 关联不级联更新。(服务“PersistenceService$Default”,事件“UPDATE”,实体“com.sap.di.irp.postingDocument.PostingDocuments”)
3)当尝试使现有列表为空并运行更新查询时,出现以下错误
错误: 将 ChangeSet 2 标记为已取消:无效的 CQN:多方关联的值n 'com.sap.di.irp.postingDocument.PostingDocuments.packagingIssue' **不得为空。 **(服务“PersistenceService$Default”,事件“UPDATE”,实体“com.sap.di.irp.postingDocument.PostingDocuments”)
请随时分享您的想法。
期待更好的解决方案来更新关联字段
请查看这里https://cap.cloud.sap/docs/guides/providing-services#%E2%80%93-deep-insert,如果我理解正确的话,我想你需要在这里深度插入。那么你需要的是组合而不是关联。
请注意,关联和组合在(深度)插入和更新中的处理方式不同: 组合→运行时深度创建或更新目标实体中的条目 关联 → 运行时将外键填充到现有目标条目