无法更新关联字段

问题描述 投票:0回答:1

无法更新关联字段:

CDS 实体 1:

实体打包问题:cuid,托管{

PackagingIssueId  :  String;
issueDes          :  String(80);
postingDocument   :  PostingDocument;
}

CDS 实体 2:

实体发布文档: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”)

请随时分享您的想法。

期待更好的解决方案来更新关联字段

java odata sap-fiori cds
1个回答
0
投票

请查看这里https://cap.cloud.sap/docs/guides/providing-services#%E2%80%93-deep-insert,如果我理解正确的话,我想你需要在这里深度插入。那么你需要的是组合而不是关联。

请注意,关联和组合在(深度)插入和更新中的处理方式不同: 组合→运行时深度创建或更新目标实体中的条目 关联 → 运行时将外键填充到现有目标条目

© www.soinside.com 2019 - 2024. All rights reserved.