CAP-不能在ON条件的定义中使用非托管关联

2020-08-14 04:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 实现CAP应用程序,...

         点击此处--->   EasySAP.com群内免费提供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也出现此问题,我将另开一篇文章

4条回答
SAP小菜
2020-08-14 04:28

根据您要执行的操作,可以将视图基于DriverVehicle表,然后可以进行内部联接(假定删除/插入) 正常工作):

 ...作为DriverVehicles上的选择...内部联接驱动程序...内部联接Vehicles 

应该适合搜索。

出于纯粹的显示目的,我仅使用三个表的直接性作为服务中的投影,因此odata这样的调用将为您提供所有必需的信息

 .../srv/Drivers?$ expand = vehicles($ expand = vehicle)

和在ui5上下文中的绑定,像这样的简单工作(粗略的例子)

 <列表项= {/Driver(123)/车辆}>
     
 
 

一周热门 更多>