NHibernate基础和派生类映射

时间:2009-10-09 08:39:54

标签: c# nhibernate class mapping base

情况: 我有一个 MyClass 类及其“轻量级”版本 MyClassLite ,所以我有

public class MyClass : MyClassLite

我还使用 hbm 文件来映射我的类(它们映射到同一个表)。 问题是,当我尝试获取 MyClassLite 实体的列表时,我不仅得到 MyClassLite 实体,而且还得到 MyClass 实体的列表。我怎么能摆脱那个?

2 个答案:

答案 0 :(得分:1)

这个ClassLite究竟是什么?为什么你的Class继承自ClassLite?这里真的有“IS-A”关系吗?

ClassLite存在的原因是什么?例如,当您必须显示“类”实例的概述时,它是否是您使用的类? 然后,如果是这种情况,你应该看看DTO或'Views',Projections和AliasToBeanEntityResultTransformer。

答案 1 :(得分:0)

如果您为映射或查询中的列表配置了预先加载,您将获得MyClass实现。

在条件查询中:

Criteria.SetFetchmode("MyClassListProperty", Fetchmode.Eager)

在hql查询中:

left join fetch MyClassListProperty

在映射文件中:

<set [...] lazy="false"> ...