【问题标题】:How do I use NHibernate criteria queries to load associations based on additional conditions如何使用 NHibernate 条件查询来加载基于附加条件的关联
【发布时间】: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


    【解决方案1】:

    Diego,在 nhibernate 邮件列表中,帮助我发现了我的方式的错误。我的所有结构都错了。

    根据他的建议,我决定按照数据库中的小猫进行映射;作为列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2010-11-26
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多