0

次のマッピングがあります。

<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 が生成されます。

提案?

4

1 に答える 1

0

specialProperty 定義に column="id" があります

于 2009-05-21T23:26:20.300 に答える