【发布时间】:2011-10-10 10:38:38
【问题描述】:
我正在尝试使用 CreateSQLQuery 在 NHibernate 中创建 SQL 查询:
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; }
}
谢谢!
【问题讨论】:
-
我们能看到映射吗?
-
什么映射?我没有“LossQueryDto”的任何映射。据我了解,如果使用 CreateSQLQuery(不进行命名查询时),则不需要映射。如果我需要创建一个映射,那么我该怎么做以及如何调用查询?
标签: hibernate nhibernate fluent-nhibernate nhibernate-mapping