点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
实现CAP应用程序,我具有以下数据模型:
实体驱动程序:托管,cuid { seqID:整数; firstName:字符串; ... 车辆:许多DriverVehicles的关联 在cars.driver = $ self; } 实体车辆:托管,液体{ seqID:整数; numberPlate:字符串; ... 驾驶员:与许多DriverVehicles的关联 在drivers.vehicle = $ self; } 实体DriverVehicles { 关键驱动程序:与驱动程序的关联; 关键车辆:车辆协会; }
现在,我想定义一个视图,以便可以在搜索驱动程序时使用它。 在这里,我还需要能够通过车辆ID进行搜索。 因此,我具有以下视图定义:
查看驱动程序搜索为 从驱动程序中选择 左外连接DriverVehicles 在Drivers.ID = DriverVehicles.driver.ID上 左外连接车辆 在Vehicles.ID = DriverVehicles.vehicle.ID上 { concat(Drivers.ID,Installations.ID)作为recordID:字符串, 键" ABC"作为键:字符串, Drivers.ID作为driverID, Drivers.firstName, ... Vehicles.ID作为vehicleID, Vehicles.numberPlate };
稍作调整*,以上内容即可在SQLite中编译并正常运行(几乎**)。 但是,在将cds部署到HANA时,会引发错误消息:
... 错误:com.sap.hana.di.cds:无法在打开条件的定义中使用非托管关联 ...
现在,检查用于多对多关联的CAP文档 ,以上两个似乎是托管关联。 那么,有什么想法可以支持上述用例,但如果我不能正确设置呢?
问候
Serdar
* SQLite不支持concat(); 因此,我将行更改为:
... Drivers.ID || Installations.ID作为recordID:字符串, ...
**为简短起见,如果HANA也出现此问题,我将另开一篇文章
你好
由于cds-compiler将所有托管关联都转换为非托管关联,因此您收到了错误消息,即它添加了打开条件。 您可以通过直接使用关联来避免此问题,而不是通过JOIN重建关系:
最好的问候
Simon
Simon嗨
谢谢您的回答。 这样就可以解决问题。
根据您要执行的操作,可以将视图基于DriverVehicle表,然后可以进行内部联接(假定删除/插入) 正常工作):
应该适合搜索。
出于纯粹的显示目的,我仅使用三个表的直接性作为服务中的投影,因此odata这样的调用将为您提供所有必需的信息
和在ui5上下文中的绑定,像这样的简单工作(粗略的例子)
您好Sergei
感谢您的建议。 但是,我也需要让驾驶员没有车辆。 这就是为什么它必须以Drivers开头并且必须进行外部联接的原因。
一周热门 更多>