に参加:NHibernateは - ミキシングサブクエリと熱心左は、このデータベースモデルを考えてみましょう
私の願いは、データベース、熱心な負荷彼らの支払いともaddから(自分の名前で)すべての製品を照会することです
Product Payment Info
------- ------- --------
Id Id Id
Name Value Year
Date Description
ProductId ProductId
いくつかのパラメータによってInfoからの説明。 NHibernateは、クエリ(それはSQL、HQLでのかどうかに関係なく、基準を行うにはどのように
- :しかし、私は2つの大きな問題を持っている
Select product.Id, product.Name, payment.Value, payment.Date, (select inf.Description from Info inf where inf.ProductId = product.Id where inf.Year = 2010 limit 1) as Description from product left outer join payment on product.Id = payment.ProductId where product.Name like ?
:(Postgre)SQLは、次のようになりますAPI、QueryOver、LINQなど)?
私はCategory.Descriptionを投影する必要があり、私はこの思い付いた疑い:
var subquery = DetachedCriteria.For<Info>("inf")
.Add(Restrictions.EqProperty("inf.Product.Id", "p.Id"))
.Add(Restrictions.Eq("Year", 2010)).
.SetProjection(Projections.Property("inf.Description"));
var criteria = session.CreateCriteria<Product>("p")
.Add(Restrictions.Eq("Product.Id", 12345678))
.SetProjection(
Projections.Property("p.Id"),
Projections.Property("p.Name"),
Projections.Property("p.Payments"),
Projections.Alias(Projections.SubQuery(subquery), "p.Description"));
criteria.SetFetchMode("p.Payments", FetchMode.Eager);
しかし、これは動作しません。サブクエリを作成するにはどうしたらよいですか?
- 結果セットからエンティティ(豆)を作成するにはどうすればよいですか?
public class Product { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual string Description { get; set; } public virtual IList<Payment> Payments { get; set; } } public class Payment { public virtual int Id { get; set; } public virtual Product Product { get; set; } public virtual double Value { get; set; } public virtual DateTime Date { get; set; } }
私は予測を使用しているように、これはAliasToBeanResultTransformerのためのケースのように見えます、しかし、私の左を認識していないようだ。私は結果から次のエンティティを作成したい
参加する(熱心にペイメントを積んだ)
お知らせください。
ありがとうございます!
あなたが記述の値を取得するためにNHibernateの式を使用することができます
あなたはすでに働いてSQLクエリを持っており、それはSQL、HQLか何かだ場合、あなたは気にしないので、それ以外の場合は、あなたが持っているSQLクエリを使用してみませんか? –
はい、そうですが、結果からエンティティを作成する必要があり、その操作方法がわかりません。 – user315648