假设我创建了一个条件查询并使用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属性名称添加订单,但限制仅显示为使用实际属性名称。我猜这是因为它们在转换之前应用,就像你在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。
答案 0 :(得分:0)
它应该使用别名点属性名称的名称。 {别名}请将.Name。
或者我误解了你的问题?