【发布时间】:2011-01-31 22:30:16
【问题描述】:
我正在尝试在 <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 对象。
我可以使用 a 而不是 HQL 成功地做到这一点,但我试图以独立于数据库的方式构建它。
对如何让 <loader> 和 <query> 元素返回填充的 ParentOnly 对象有任何想法...?
谢谢
马特
【问题讨论】:
-
HQL 查询是由一个工具 btw 生成的,任何人都想知道为什么要使用它。
标签: c# nhibernate nhibernate-mapping hql