1

特定の nHibernate マッピング ファイル (nHibernate 1.2) の HQL を作成するのに問題があります。このSQL Fiddleの例は、私が求めているテーブル構造と結果を示しています。基本的に、私は管轄権を渡します。管轄権がない、またはその特定の管轄権を持つすべてのタイトルが必要です。現在のプロセスはすべてを元に戻し、コードでフィルタリングします。これを改善して、SQLレベルでフィルタリングできるように取り組んでいます。

マッピング ファイルはこれと非常によく似ています。

<?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
        assembly="MyApp.Business"
        namespace="Ap.Bus.Entity"
        default-access="field.camelcase-underscore"
        default-cascade="save-update" >

        <class name="Titles" table="dbo.Titles"  mutable="true" lazy="true">
            <!--Primary Key-->
            <id column="TitleID" name="Id" unsaved-value="0">
                <generator class="identity">
                </generator>
            </id>

        <property column="TITLE" name="Title"/>
        <property column="Enabled" name="Enabled" />

        <bag name="Jurisdictions" table="dbo.Jurisdictions" lazy="false" cascade="none">
            <key column="TitleID" />
            <many-to-many class="Ap.Shared.Jurisdiction, Ap.Shared" column="JurisdictionID"/>
        </bag>
</class>

私は非常に多くの異なる HQL を試しましたが、管轄区域に参加し始めたときはまったく機能しませんでした。結合なしで有効なタイトルのみを返すときに機能していました。

では、これを達成するために HQL をどのように記述すればよいでしょうか?

4

1 に答える 1

1
select t
from Title t left outer join t.Jurisdictions as j
where j is null or j = :someJurisdiction

おそらく、上記の最後の 2 つの「j」に「.JurisdictionID」を追加する必要があります。

于 2012-11-21T12:25:10.553 に答える