【问题标题】:NHibernate: Is it possible to add restriction based on alias nameNHibernate:是否可以根据别名添加限制
【发布时间】:2009-12-04 17:39:05
【问题描述】:

假设我创建了一个条件查询并使用 AliasToBean 结果转换器对其进行转换。

session.CreateCriteria<Staff>("s")
  .CreateAlias("supervisor", "super")
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("s.name"), "name")
    .Add(Projections.Property("super.name"), "supervisor_name"))
  .SetResultTransformer(Transformers.AliasToBean<StaffView>());

如果只知道bean的属性名,是否可以添加限制?您可以使用 bean 属性名称 AddOrder,但 Restrictions 似乎仅适用于实际的属性名称。我猜这是因为它们是在转换之前应用的,就像您在 where 子句中不使用列别名但您可以按顺序一样。

//throws exception like cannot find property supervisor_name in Staff class
//only "super.name" works
.Add(Restrictions.Like("supervisor_name", "blah"))

//this works though
.AddOrder(Order.Asc("supervisor_name")) 

所以基本上我需要一种方法来根据别名获取别名属性名称。我可以想到多种方法来做到这一点,但我希望 NHibernate 有一些现有的方法?例如,我可以将属性单独映射到别名,或者只映射到数据库视图,因此无需转换为 bean。

【问题讨论】:

    标签: nhibernate criteria


    【解决方案1】:

    它应该与别名点属性名称的名称一起使用。 {别名}.名称。

    还是我误解了你的问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多