假设我有一只猫有两个属性:
这些小猫受其等级的歧视。
加载猫时,我想要等级为“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();
麻烦的是,一旦加载,收藏夹和收藏夹 SecondFavoriteKitten是同一只小猫:排名为“2”的小猫。
我是否遗漏了标准?或者我是否会这样做 错误的方式?
答案 0 :(得分:0)
迭戈,在nhibernate邮件列表中,帮助我看到了我的方式的错误。我的一切都是错误的。
根据他的建议,我决定将小猫映射到数据库中;作为清单。