これまで (NHibernate を使用して) エンティティ マッピングを使用してきましたが、生の SQL クエリの作成にはあまり関与していませんでしたが、まさにそれを行う必要がある場所で何かが発生しました。
私が抱えている問題は、クエリの列エイリアスを Dto オブジェクトに自動的にマップしたいということです。
これは機能しますが、クエリの順序で列エイリアスを指定する必要があります。
SQL
string sql = "select mycol1 as ColumnOne from mytable";
Hibernate クエリ
var query = session.CreateSQLQuery(sql)
.AddScalar("ColumnOne", NHibernateUtil.Int32)
.SetResultTransformer(
NHibernate.Transform.Transformers.AliasToBean<MyDtoObject>()
);
MyDtoObject
public class MyDtoObject
{
public int ColumnOne {get;set;}
}
しかし、マッピング クラスを作成せずに、クエリ内の列と Dto の間のマッピングを NHibernate に自動化させる方法はありますか?
クエリでエイリアスを使用する例をいくつか見ました。
string sql = "select mycol1 as {ColumnOne} as ColumnOne from mytable"; /// ???
ただし、エイリアス {ColumnOne} は、SQL ステートメントとしてデータベースに送信される前に置き換えられないように見えるため、これを機能させることはできません。
何か案が?
ティア
サム