如何在(n)hibernate中对子对象的属性进行排序?

Dav*_*bin 4 sorting nhibernate 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; 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();
Run Code Online (Sandbox Code Playgroud)

启用此方案需要执行哪些操作?我正在使用NHibernate 2.1.谢谢!

Chs*_*y76 13

您需要添加别名或为您的孩子创建嵌套条件.不知道怎样在NHibernate中这样做,在Hibernate中它是通过createCriteria()createAlias()方法完成的.然后,您将按顺序使用别名作为前缀.

更新 Hibernate代码示例:

Criteria criteria = session.createCriteria(FooType.class);
criteria.createAlias("bar", "b");
criteria.addOrder(Order.asc("b.color"));
Run Code Online (Sandbox Code Playgroud)

我想在NHibernate中它会非常相似,尽管属性/实体名称是大写的.这是NHibernate文档中的一个示例.