Skip to Content
Jul 26, 2020 at 04:38 PM

CAP - Unmanaged associations cannot be used in the definition of an ON condition



Implementing a CAP application, I have the following data model:

entity Drivers : managed, cuid {
    seqID     : Integer;
    firstName : String;
    vehicles  : Association to many DriverVehicles
                   on vehicles.driver= $self;

entity Vehicles : managed, cuid {
    seqID      : Integer;
    numberPlate: String;
    drivers    : Association to many DriverVehicles
                    on drivers.vehicle= $self;

entity DriverVehicles {
    key driver  : Association to Drivers;
    key vehicle : Association to Vehicles;

Now, I would like to define a view so that I can utilise it in searching Drivers. Here, I need to be able to search by vehicle ID as well. So, I have the following view definition:

view DriverSearch as
     select from Drivers
     left outer join DriverVehicles
       on Drivers.ID = DriverVehicles.driver.ID
     left outer join Vehicles
       on Vehicles.ID = DriverVehicles.vehicle.ID
       concat(Drivers.ID,Installations.ID) as recordID: String,
       key 'ABC' as key: String,
       Drivers.ID as driverID,
       Vehicles.ID as vehicleID,

With a small tweak*, the above compiles and works well (almost**) in SQLite. However, when deployed, i.e. cds deploy, to HANA, it raises an error saying:

Error: Unmanaged associations cannot be used in the definition of an ON condition

Now, checking the CAP documentation for managed to-many associations, the above two seem to be managed associations. So, any idea where I am failing to set this properly assuming the above use case is supported?

Kind Regards


* SQLite does not support concat(); hence, I change the line to:

Drivers.ID || Installations.ID as recordID: String,

** To keep this question short, I will open another post if the problem also happens for HANA