nhibernate查询实现接口的所有对象

nhibernate查询实现接口的所有对象,nhibernate,fluent-nhibernate,mapping,Nhibernate,Fluent Nhibernate,Mapping,例如,如果你有一个苹果:IWhatever和一个橘子:IWhatever,你想找到它们,因为它们都是IWhatevers,那么在NHibernate中你需要做什么 它是否完全依赖于HQL或criteria查询,或者在映射中是否也必须执行某些操作?如果有映射需求,Fluent NHibernatee是否支持它?您可以进行UnionSubClass映射。不幸的是,这在流利的英语中是没有报道的 您可以使用以下方式进行映射: <class name="IWhatever" abstract="tr

例如,如果你有一个苹果:IWhatever和一个橘子:IWhatever,你想找到它们,因为它们都是IWhatevers,那么在NHibernate中你需要做什么


它是否完全依赖于HQL或criteria查询,或者在映射中是否也必须执行某些操作?如果有映射需求,Fluent NHibernatee是否支持它?

您可以进行UnionSubClass映射。不幸的是,这在流利的英语中是没有报道的

您可以使用以下方式进行映射:

<class name="IWhatever" abstract="true">
    <id name="Id">
    </id>

    <union-subclass name="Apple">
        <property name="Bla" type="int"/>
    </union-subclass>

    <union-subclass name="Orange">
        <property name="Bla" type="int"/>
    </union-subclass>
</class>

对于标准,您不需要映射它。只是:

session.CreateCriteria<IWhatever>()
       .List<IWhatever>();
session.CreateCriteria()
.List();

请记住,您只能对IWhatever中存在的字段进行查询/排序/投影。

您仍然可以正常映射Apple&Orange,或者这种嵌套类映射是具体类型的映射吗?您在查询中需要做什么特殊的事情?干杯不幸的是,这是映射:(.至于查询,只需继续并执行一个会话。CreateCriteria.for()看起来就是这样。这建议您在执行此操作时需要使用HiLo作为标识。另一个[SO post]支持这一点,并提出一个解决方案,使之成为FNH。Cheers Diego的答案可能适合我最需要做的事情。这里还列出了其他明显的映射选项。Cheers,他的答案确实是你所需要的。很好,我不知道没有映射就可以做到。我一开始没有得到这个。所以如果我只需要苹果的话&Oranges persisted我可以正常映射它们,然后作为IWhatevers检索它们??是否有HQL等价物?这将非常适合我需要做的事情。干杯!是的,你可以。HQL是相同的,但你必须
接口(请参阅)这个示例运行得很好。但是,由于它创建的单个SQL查询与实现接口的类一样多,因此分页结果就成了问题。似乎每个查询都要进行分页。有没有办法在这些查询之上创建查询?@Allov:没有办法自动分页任意组的查询不相关的实体。请使用自定义SQL。