Nhibernateのcomposite-idのキーと多対1の関連付けをナビゲートすることはできますか?composite-idのキーを多対1でナビゲートすることは可能ですか?
<class name="StructureUser">
<composite-id>
<key-many-to-one name="Structure" class="Structure" column="STRUKTUR_ID" />
<key-many-to-one name="User" class="User" column="USERID" />
</composite-id>
...
</class>
<class name="Structure">
<id name="Id" column="id" type="Int32" >
<generator class="native"/>
</id>
<property name="Low" column="low" type="Int32" />
...
</class>
は、私は、クエリでStructureUserクラスを介して構造の「Low」のプロパティにアクセスしたい:
は、私は次の設定でマッピングされた数(レガシー)のテーブルを持っています。私は考えることができるCriteria APIのすべての使い方を試しましたが、常にエラーです。ここに私が試したクエリの2つです:ICriteria crit1 = Session.CreateCriteria(typeof(StructureUser))
.CreateAlias("Structure", "struc")
.Add(Restrictions.Le("struc.Low", 123));
ICriteria crit2 = Session.CreateCriteria(typeof(StructureUser))
.Add(Restrictions.Le("Structure.Low", 123));
crit1にエラーがデータベースから来て、NHibernateのは、のために必要なジョインを生成しないので、「struc_1.Lowは、このコンテキストでは有効ではない」ことを言います、 sqlコマンドの制限。 crit2のエラーはNHibernateから来ており、StructureUserの "Structure.Low"プロパティにアクセスできないことを伝えています。
私はkey-property要素でcomposite-idを宣言し、通常のmany-to-one要素との関係を宣言することでこの問題を回避しました。
この問題を解決する別の方法はありますか?
私は同様の問題に実行していますよ。 –