我正在尝试在<loader>
元素中使用HQL查询来加载基于其他实体的实体。
我的课程如下
public class ParentOnly
{
public ParentOnly(){}
public virtual int Id { get; set; }
public virtual string ParentObjectName { get; set; }
}
,映射看起来像这样
<class name="ParentOnly">
<id name="Id">
<generator class="identity" />
</id>
<property name="ParentObjectName" />
<loader query-ref="parentonly"/>
</class>
<query name="parentonly" >
select new ParentOnly()
from SimpleParentObject as spo
where spo.Id = :id
</query>
我正在尝试映射的类是SimpleParentObject,它有自己的映射,可以毫无问题地加载和保存。
当我调用session.Get <ParentOnly>
(id)时,sql对SimpleParentObject表运行正确,并且实例化了一个ParentOnly对象(因为我可以单步执行构造函数),但只返回null,而不是而不是实例化的ParentOnly对象。
我可以使用而不是HQL成功完成此操作,但我尝试以独立于数据库的方式构建它。
有关如何让<loader>
和<query>
元素返回填充的ParentOnly对象的任何想法......?
由于
马特
答案 0 :(得分:0)
根据我对nHibernate文档的理解,更改select语句应解决这个问题。
<query name="parentonly" >
select ParentObjectNameAS {spo.Name}, Id AS {spo.Id}
from SimpleParentObject as spo
where spo.Id = :id
</query>