2つのプロパティを持つ猫がいるとしましょう。
- FavoriteKitten
- SecondFavoriteKitten
これらの子猫はランクによって区別されます。
猫を乗せるときは、ランクが「1」の子猫をFavoriteKittenにし、ランクが「2」の子猫をSecondFavoriteKittenにします。
基盤となるデータベースは次のようになります。
table Cat
----------------
CatId
table Kitten
-----------------
KittenId
CatId
Rank
私のマッピングは次のようになります:
<class name="Cat">
... other stuff
<one-to-one name="FavoriteKitten" class="Kitten" property-ref="Cat" cascade="all-delete-orphan" />
<one-to-one name="SecondFavoriteKitten" class="Kitten" property-ref="Cat" cascade="all-delete-orphan" />
</class>
私の基準クエリは次のようになります
Cat cat = sess.CreateCriteria(typeof(Cat))
.CreateAlias("FavoriteKitten", "kt1")
.Add(Expression.Eq("kt1.Rank", "1"))
.CreateAlias("SecondFavoriteKitten", "kt2")
.Add(Expression.Eq("kt2.Rank", "2"))
.UniqueResult();
問題は、一度ロードされると、FavoriteKittenとSecondFavoriteKittenの両方が同じ子猫、つまりランクが「2」の子猫であるということです。
基準から外れたものはありますか?それとも私はこれを間違った方法で行っていますか?