【发布时间】:2010-08-26 17:10:20
【问题描述】:
假设我有一只猫,它有两个属性:
- 最喜欢的小猫
- 第二喜欢的小猫
这些小猫是根据他们的等级来区分的。
加载猫时,我希望排名为“1”的小猫是 最喜欢的小猫,以及等级为“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”的小猫。
我是否遗漏了一些条件?或者我要解决这个问题 走错路了?
【问题讨论】:
标签: nhibernate nhibernate-criteria