1

私はCreateSQLQueryを使用してNHibernateのでSQLクエリを作成しようとしています:NHibernate - CreateSQLQueryの例外 "何も残念ではありません"、なぜですか?

var query = session.CreateSQLQuery(
    "select loss.id as loss.Id, loss.start_date as loss.Date, " + 
    "  (select ... limit 1) as loss.Reserve, " + 
    "  (select sum(m.val) ...) as loss.Payment " + 
    "from LossData loss .. where ..."; 

// Commenting or uncommenting these doesn't have any effect either 
query.AddScalar("Id", NHibernateUtil.Int32); 
query.AddScalar("Date", NHibernateUtil.DateTime); 
query.AddScalar("Reserve", NHibernateUtil.Double); 
query.AddScalar("Payment", NHibernateUtil.Double); 

query.AddEntity("loss", typeof(LossQueryDto)); 
query.SetResultTransformer(Transformers.AliasToBean(typeof(LossQueryDto))); 

var list = query.List<LossQueryDto>(); 

しかし、それは「のための存続: 『LossQueryDto』」私にエラーを与えません。このクエリで何が問題になっていますか? クエリに追加のマッピングが必要ですか?もしそうなら、Fluent Nhibernateで定義することはできますか?私はNHibernate 3.1を使用しています。

DTO自体がこのようなものです:

public class LossQueryDto 
{ 
    public virtual int Id { get; set; } 
    public virtual DateTime Date { get; set; } 
    public virtual double Reserve { get; set; } 
    public virtual double Payment { get; set; } 
} 

ありがとう!

+1

我々はマッピングを見ることができますか? – ssedano

+0

どのようなマッピングですか?私は 'LossQueryDto'のマッピングがありません。 CreateSQLQuery(名前付きクエリを実行していない場合)を使用している場合は、マッピングが不要であると私は理解していました。マッピングを作成する必要がある場合、どのようにしてクエリを呼び出すのですか? – user315648

答えて

3

あなたはエンティティを問い合わせるが、DTO、あなたは以下を削除することができますされていません。

query.AddEntity("loss", typeof(LossQueryDto)); 
+2

私はdtoのマッピングが必要でした。唯一の回答者であるので、私はあなたの答えを受け入れますが、それは完全に関連しているわけではありません。 – user315648

関連する問題