この例には、DeliveryMethodとCountryの2つのクラスがあります。彼らはお互いに多対多の関係を持っています。
私がやりたいのは、国がマップされていないすべてのDeliveryMethodsを選択することです。
私は反対のことをすることができます、それは少なくとも1つの国を持っているすべての配達方法を選択することです-
SELECT m FROM DeliveryMethod m JOIN m.countries
しかし、countriesフィールドが空の場所を選択する方法がわかりません。プレーンSQLでは、次のようにします(deliverymethod_countryはリンクテーブルです)。
SELECT m.* FROM deliverymethods m
LEFT JOIN deliverymethod_country dc ON dc.deliverymethod_id = m.id
WHERE dc.deliverymethod_id IS NULL
ただし、これに相当するDQLは機能しません。次に例を示します。
SELECT m FROM DeliveryMethod m LEFT JOIN m.countries WHERE m.countries IS NULL
これは私にこのエラーを与えます:
[Syntax Error] line 0, col 75: Error: Expected end of string, got 'm'