次のマッピングがあります。
<class name="Customer">
<!-- actually one-to-one for all intents and purposes-->
<many-to-one name="specialProperty" class="SpecialProperty" cascade="all" not-found="ignore" insert="false" update="false" column="id" unique="true"/>
</class
<class name="SpecialProperty" lazy="false">
<id name="id" column="customer_id">
<generator class="foreign">
<param name="property">customer</param>
</generator>
<one-to-one name="customer" class="Customer" constrained="true"></one-to-one>
</class>
このマッピングを使用すると、special_properties テーブルに特定の顧客のエントリがない場合、customer.specialProperty は null になります。 (通常の 1 対 1 マッピングを使用すると、プロキシ オブジェクトを保持する specialProperty が生成されるため、null をテストすることはできません) したがって、コードでは、customer.specialProperty == null を実行するだけで、Customer に SpecialProperty があるかどうかを確認できます。
null 以外の SpecialProperty を持つすべての顧客を返すクエリと、null の SpecialProperty を持つすべての顧客を返す別のクエリを作成しようとしています。
次のように、null 以外の SpecialProperty を持つ Customers を取得できます。
from Customer customer inner join customer.specialProperty
ただし、SpecialProperty を持っていない顧客を取得できません (例: customer.specialProperty == null)。
私はいくつかのことを試しました。基本的に私が欲しいのは次のようなものです
from Customer customer where customer.specialProperty is null
ただし、これにより、何らかの理由で customer.id が null であることをテストする sql が生成されます。
提案?