寻找相关对象的相关对象的NHibernate查询
问题描述:
我有一个nHibernate查询问题,看起来很直截了当,但我似乎无法得到我的头!寻找相关对象的相关对象的NHibernate查询
我创造了一些简单的示例类来说明我的问题:
public class Car {
public int Id { get; set; }
public IList<Interior> InteriorParts { get; set; }
}
public class Interior {
public int Id { get; set; }
public InteriorProducer Producer { get; set; }
}
public class InteriorProducer {
public int Id { get; set; }
}
我们查询:我InteriorProducer的ID,但需要得到汽车的列表,其中内部已产生由内部生产商。
因此,在一个简单的,伪SQL,它看起来是这样的:
select cars
where car.InteriorParts.Producer.Id = Id
我有一个很艰难的时间让我的头围绕它来创建一个NHibernate的查询。
任何想法?
感谢
答
var cars = session
.CreateCriteria<Car>()
.CreateAlias("InteriorParts", "parts")
.CreateAlias("parts.Producer", "producer")
.Add(Expression.Eq("producer.Id", id))
.List();
根据你的情况下,你可能还需要过滤重复的汽车,将被因取到SQL连接:
.SetResultTransformer(Transformers.DistinctRootEntity)
答
和HQL ...
var query = session.CreateQuery
("select c from Cars c where c.InteriorParts.Producer.Id = :pid");
query.SetInt32("pid", producerId);
IList<Car> cars = query.List<Car>();
thx moo,忘记标记正确 – Jaguar 2010-04-12 08:33:07