1
我試圖創建使用createSQLQuery NHibernate的SQL查詢:NHibernate - CreateSQLQuery異常「沒有persister for ..」,爲什麼?
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; }
}
謝謝!
我們能看到的映射? – ssedano
什麼映射?我沒有任何'LossQueryDto'的映射。我的理解是,如果使用CreateSQLQuery(當不進行命名查詢時),映射不是必需的。如果我需要創建一個映射,那麼我該如何做以及如何調用查詢? – user315648