JPQL select from association recipe2

I have this relationship:
https://doc.cuba-platform.com/manual-6.10-ru/association_mtm_recipe_2.html
How to select all airports that don’t have certain dutyfree {1} ( and also all airports that have no dutyfrees {2} (and also I want only those airports that have certain property, say, where airport.size=5))?
For example certainDutyFree=D1
And we have
Airports: A1 A2 A3
Dutyfrees: D1 D2
AirportDutyfree: (A1,D1) (A1,D3), (A2,D2)
Then we’ll get A2{1},A3 {1}({2})
It was initially this question: Add temporary constructed inplace rows using datasource with query - CUBA.Platform (still not solved since October )
It could be paraphrased "fill datasource with temporary constructed airportDutyfree entities such that

  1. events that belong to them fulfill the above mentioned requirements and
  2. those entities all have certain dutyfree say D1 (result will be (A2,D1) (A3,D1))"
    but then I realized that I better construct airportDutyfree entities in a screen controller on demand from airport entities
    I thought of using union and/or join JPQL union and Join - #7 от пользователя keithfrohn - CUBA.Platform but union isn’t supported and I have no luck with join

select ad from app$AprtDfree ad where ad.dutyfree.id <>:session$dFreeID ignores where though :session$dFreeID is expression of type UUID.
Why?

I want SELECT e FROM callbook$Event e WHERE e.cards IS EMPTY OR (select ec from callbook$EventCard ec where ec.card.id <>:session$currentMemberID) MEMBER OF e.cards

If airport is event and card is duty free then this JPQL query should have answered my question but because of that it doesn’t.