点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有一个用例,其中我在表的顶部创建了一个视图以计算字段。 在同一表中,我将创建到此表顶部视图的关联,以便可以导航到此计算字段。 除非我尝试扩展和过滤此关联,否则此方法工作正常。
我模拟了问题的简化版本,即数据模型:
Authors是实体,而AuthorStatus是此表顶部的视图。 Authors表中的AuthorStatus是表和视图之间的关联:
命名空间sap.capire.bookshop; 实体作者{ 密钥ID:整数; 名称:字符串(111); AuthorStatus:AuthorStatus.ID = ID上与AuthorStatus的关联; }; 实体AuthorStatus从供应者身份中选择{ ID, 测试状态:String(20) };
两者都暴露在服务层中:
使用" ../db/schema"中的{sap.capire.bookshop作为我的}; 服务AdminService @(__ requires:'authenticated-user'){ 实体Authors作为my.Authors的投影; 实体AuthorStatus作为对my.AuthorStatus的投影; }
当我尝试通过扩展数据并过滤作者姓名进行测试时,一切正常:
http://localhost:4004/admin/Authors?$ expand = AuthorStatus&$ filter = name eq'Wouter'
当我尝试过滤关联中的"状态"字段时,出现以下错误:
网址:http://localhost:4004/admin/Authors?$ expand = AuthorStatus&$ filter = AuthorStatus/status eq'test'
错误:
启用调试并查看生成的查询时,我注意到它生成了错误的SQL:
从AdminService_Authors中选择a.ID AS" a_ID",a.name AS" a_name",b.ID AS" b_ID",b.status AS" b_status"。 ID)WHERE a.AuthorStatus.status = ? LIMIT 1000 ['test']
我猜它应该在表" b"的何处使用"状态"?
这可能是错误,还是我做了不允许的事情?
提前谢谢!
K,伍特
(16.4 kB)
嗨,
我没有答案,但是我记得我在CAP上的SAP研讨会上看到了这个问题。 我们尝试将其部署到HANA,并且在那儿工作正常。 因此,它看起来像是CAP中的错误。 也许您可以尝试将其部署到HANA上,看看是否可以在此处复制它。
我还想补充一点,即在将其部署到HANA数据库中时,它确实可以工作。 这仅在本地测试时发生。
嗨,
路径表达式(在本例中为" AuthorStatus/status")仅适用于SAP HANA,不适用于SQLite。
最好的问候,
David
我的观点是,如果它适用于HANA,它也应适用于SQLite。 因此,对我来说,这似乎是一个错误,CAP开发人员应该解决它。
嗨,Wouter,
我们也已切换为在云上使用HDI容器,并在需要此类查询时连接到该容器。
我尝试调试整个sql来解决问题,但实际上并没有找到简单的解决方法。 (是的,请在调试中手动更改设置的一部分,但这不是解决方案。)
David Kunz 也许可以在文档中的某处注明这一点,或者您是否有诸如Wouter之类的计划要求解决此问题? 到目前为止,这是一个反复出现的问题。 :)
https://answer.sap.com/questions/13016370/cloud-application-programming-model-sqlit-order-an.html
https://github.com/sapmentors/cap-community/issues/22
我尝试手动解决此问题时遇到的是 以下内容:
在expandCQNToJoin.js(@ sap/cds-runtime/lib/cds-sql/expand)中的buildJoinQueries中,首先构造了where,然后进行了联接,这导致了where不能正确映射到 加入了什么。
我没有太多时间去深入研究这个问题。
亲切的问候,
Vincent
一周热门 更多>