nhibernate - 查找具有相同列表的对象

时间:2011-04-28 15:51:00

标签: hibernate nhibernate

让我们说我有一个包含一些其他对象的IList的对象。是否可以有效地找到具有相同IList的对象?你会用什么HQL或ICriteria?我看不到使用SQL的简单方法。

感谢。

基督教

PS:

只是澄清一下。我有一个A类,其中包含:

public virtual string Text { get; set; }

B类包含:

public virtual IList<A> As { get; set; }

我想找到包含的每个对象:

a,a1,bla

按此顺序。逗号表示列表中的特定Text元素。

PPS:

使用ICriteria的find by example似乎不起作用:

NHibernateSession.Current.CreateCriteria(typeof(B)).Add(Example.Create(b)).List(); 

这里b是B的实例,其中列表包含A

的特定实例

2 个答案:

答案 0 :(得分:0)

我会使用Linq to NHibernate。我已经取得了成功。

从那里你可以加入。如果需要,您可以加入多个房产。这可能不是一个完美的例子,因为我只是做了它,但它应该给你这个想法。

var query =
    from c in customers
    join e in employees
        on new { c.Id, c.Address1 } equals new { e.Id, e.Address1 }
    select new
    {
        c.Id,
        c.Name,
        c.Address1,
        e.StartDate
    };

您可以使用LinqPad(谷歌)进行测试

有关NHibernate的更多帮助,我在Ayende's site上阅读了很多好东西。

答案 1 :(得分:0)

我认为你需要几件事。您需要确保已映射为list,以便您可以使用索引来测试订单。你需要加入A

所以你可以做到

NHibernateSession.Current.CreateCriteria<B>()
    .CreateAlias("As", "a")
    .Add(Example.Create(b))