C# NHibernate基和派生类映射
情况: 我有一个类MyClass和它的“轻量级”版本MyClassLite,所以我有C# NHibernate基和派生类映射,c#,nhibernate,class,mapping,base,C#,Nhibernate,Class,Mapping,Base,情况: 我有一个类MyClass和它的“轻量级”版本MyClassLite,所以我有 public class MyClass : MyClassLite 我还使用hbm文件映射我的类(它们被映射到同一个表)。 问题是,当我试图获取MyClassLite实体列表时,我不仅得到MyClassLite实体,而且还得到了MyClass实体列表。如何消除这种情况?如果在映射或查询中为列表配置急切加载,则将获得MyClass实现 在条件查询中: Criteria.SetFetchmode("MyClas
public class MyClass : MyClassLite
我还使用hbm文件映射我的类(它们被映射到同一个表)。
问题是,当我试图获取MyClassLite实体列表时,我不仅得到MyClassLite实体,而且还得到了MyClass实体列表。如何消除这种情况?如果在映射或查询中为列表配置急切加载,则将获得MyClass实现 在条件查询中:
Criteria.SetFetchmode("MyClassListProperty", Fetchmode.Eager)
在hql查询中:
left join fetch MyClassListProperty
在映射文件中:
<set [...] lazy="false"> ...
。。。
这个ClassLite到底是什么?为什么您的类继承自ClassLite?这里真的有“是-是”关系吗
ClassLite存在的原因是什么?例如,当您必须显示“类”实例的概览时,是否使用该类?
然后,如果是这种情况,您应该查看DTO或“视图”、投影和别名ToBeanEntityResultTransformer。这不符合逻辑吗?MyClass是MyClassLite的子类,所以任何MyClass实例也是MyClassLite的instance。如果您想摆脱继承层次结构,请更改它们。例如,引入一个基类,并使MyClass和MyClassLite都成为它的子类。这看起来是合乎逻辑的,但我想知道在hbm文件中是否有任何选项可以阻止检索派生实例。一定有东西..你是如何查询这个表的MyClassLite列表的?