点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hi CDS开发人员 我在C...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hi CDS开发人员 我在C...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
Hi CDS开发人员
我在CDS-Associations上遇到了一个奇怪的行为。
在数据模型中,作者和发行者之间存在多对多关系,然后与书籍之间存在多对多关系。 意味着一个作者可以有多个发布者,反之亦然。 而且Author和Publisher的组合可以有多本书。
因为CDS不支持多对多关系,所以我创建了一个联合表" AuthorsPublishers":
对应的db/data-model.cds是:
命名空间my.bookshop; 实体作者{ 密钥ID:整数; 名称:字符串; 发布者:与许多Authors的关联Publishers上的发布者。Author= $ self; } 实体出版商{ 密钥ID:整数; 名称:字符串; 作者:在Authors.Publisher = $ self上与许多AuthorsPublisher关联。 } 实体AuthorsPublishers { 主要作者:作者协会; 关键发布者:发布者协会; 书籍:与许多书籍相关联的书籍。AuthorPublisher= $ self; } 实体书籍{ 密钥ID:整数; title:字符串; AuthorPublisher:AuthorsPublishers的协会; }
现在,奇怪的行为是通过作者和联合表访问Books实体时:
获取/catalog/Authors(4)/Publishers(1)/Books
在响应中,有一本书不属于发布者1(" CDS视图的主"属于发布者2):
{ " @ odata.context":" ../../$metadata#Books", " @ odata.metadataEtag":" W/\" dcbvuNZkmJ92kxlwkU1UXZ3mdQOzMKYrJy3JlohAJLY = \""," "值":[ { " id":4 " title":" ABAP for Dummies", " AuthorPublisher_Author_id":4 " AuthorPublisher_Publisher_id":1 }, { " id":5 " title":" CDS视图的领主", " AuthorPublisher_Author_id":4 " AuthorPublisher_Publisher_id":2 } ] }
我也可以在数据库的SQL-Console中执行相同的查询:
选择书籍。* 由MY_BOOKSHOP_AUTHORS位作者 INNER JOIN my_bookshop_authors发布者AS作者发布者 开启authorspublishers.author_id = authors.id AND authorspublishers.publisher_id = 1 INNER JOIN my_bookshop_books AS图书 在书籍上。AUTHORPUBLISHER_AUTHOR_ID= authorspublishers.author_id AND books.AUTHORPUBLISHER_PUBLISHER_ID = authorspublishers.publisher_id 在哪里authors.id = 4;
结果是:
有人知道为什么oData服务上的GET请求从错误的出版商那里返回一本书吗?
要解决此问题,我创建了一个GITHUB项目: https://github.com/bkrencker/cds_association a>
您可以在csv文件中找到CDS数据模型,oData服务以及testdata。 该项目可以直接部署到SCP Cloud Foundry试用帐户。
感谢和问候,
本
(8.1 kB)
嗨,本杰明,
您的GET请求应如下所示(键由2个属性组成):
但是,这不能解决问题...
干杯
Pierre
一周热门 更多>