私はWebアプリケーションにNHibernateを使用しています。私はHQLのサブクエリで「LastOffers」コレクション・プロパティを取得する方法を、知っていただきたいと思いプロパティを取得するためのサブクエリNHibernate
public class ProductViewModel {
public virtual int Id { get; set; }
/* others simple properties */
public virtual IList<OfferViewModel> LastOffers { get; set; }
public ProductViewModel() { }
}
public class OfferViewModel {
public virtual string UserName { get; set; }
public virtual decimal Prince { get; set; }
public OfferViewModel() { }
}
:私はこのようなモデルがありますか?私はトップ10の最後のオファーでそれを取りたいです。私のモデルは正しくマップされていますが、このプロパティをサブクエリでフェッチするsintaxはわかりません。
今日、私は私のViewModelを取得するために、このようなコマンドを使用しています:
public IList<ProductViewModel> GetProductsForSalles()
{
return
Session.CreateQuery(@"select p.Id as Id,
p.Name as Name,
p.Price as Price,
p.Price as Date
/* FETCH LastOffers? */
from Product p
where p.Active=true and (p.Status=:Status)
order by a.Date asc")
.SetParameter("Status", Status.Started)
.SetMaxResults(50)
.SetResultTransformer(Transformers.AliasToBean<ProductViewModel>())
.List<ProductViewModel>();
}
感謝を!
Hello Genius、awserに感謝します。実際には、DistinctRootEntityResultは私のproblemaを解決します:)。しかし、トップ10のレコードとid descの順序でプロパティをフェッチする方法はありますか?私はこれがパフォーマンスを向上させたいと思っています。なぜなら、製品ごとにたくさんのオファーがあるからです。再度、感謝します! –
@Felipe、私はこの機能を使用したことはありませんが、AFAIKはNHによってサポートされています。エンティティのHBMファイルでfetchmodeパラメータを使って試してみてください。 – Genius