Nhibernate 如何对子对象的属性进行(n)休眠排序?
我的域模型中有一个对象,它有一个子对象。如何使用条件查询根据子对象的属性进行排序 例如:Nhibernate 如何对子对象的属性进行(n)休眠排序?,nhibernate,sorting,criteria,Nhibernate,Sorting,Criteria,我的域模型中有一个对象,它有一个子对象。如何使用条件查询根据子对象的属性进行排序 例如: class FooType { public int Id { get; set; } public string Name { get; set; } public BarType Bar { get; set; } } class BarType { public int Id { get; set; } public string Color { get; s
class FooType
{
public int Id { get; set; }
public string Name { get; set; }
public BarType Bar { get; set; }
}
class BarType
{
public int Id { get; set; }
public string Color { get; set; }
}
...
// WORKS GREAT
var orderedByName = _session.CreateCriteria<FooType>().AddOrder(Order.Asc("Name")).List();
// THROWS "could not resolve property: Bar.Color of: FooType"
var orderedByColor = _session.CreateCriteria<FooType>().AddOrder(Order.Asc("Bar.Color")).List();
class-FooType
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共BarType Bar{get;set;}
}
类BarType
{
公共int Id{get;set;}
公共字符串颜色{get;set;}
}
...
//效果很好
var orderedByName=_session.CreateCriteria().AddOrder(Order.Asc(“Name”)).List();
//抛出“无法解析属性:条。颜色:FooType”
var orderedByColor=_session.CreateCriteria().AddOrder(Order.Asc(“Bar.Color”)).List();
要启用此场景,我需要做什么?我用的是NHibernate2.1。谢谢 您需要为您的孩子添加别名或创建嵌套条件。不知道如何在NHibernate中实现这一点,在Hibernate中通过
createCriteria()
和createAlias()
方法实现。
然后使用别名作为order by的前缀
更新休眠代码示例:
Criteria criteria = session.createCriteria(FooType.class);
criteria.createAlias("bar", "b");
criteria.addOrder(Order.asc("b.color"));
我想在NHibernate中,情况会非常相似,尽管属性/实体名称大写。这是NHibernate文档。你能给我一个代码示例吗?我不太明白你的意思。