gpt4 book ai didi

c# - NHibernate 中的鉴别器查询

转载 作者:太空狗 更新时间:2023-10-29 22:55:18 24 4
gpt4 key购买 nike

我对此进行了一些搜索,但没有发现任何东西。是否可以创建一个 Hibernate 查询以返回一组基于鉴别器的对象?

我有一个 AbstractUser 类,它由具体类 UserTypeA 和 UserTypeB 扩展。我正在使用每层次结构表模型在 NHibernate 中映射我的类,因此 UserTypeA 和 UserTypeB 都存储在具有不同鉴别器值的同一个表中。这是我的鉴别器映射属性:

<discriminator column="Type" type="string"/>

我的表中有一列包含用户类型的名称。我想知道是否可以使用它来运行 NHibernate 查询。

我试过这个:

public IList<DomainBase> FindByType(string typeName, Type type)
{
string query = "from " + type.Name + " k where k.Type = " + typeName;
return Session.CreateQuery(query).List<DomainBase>();
}

但由于Type实际上并不是类的属性,只是表中的一列,这显然行不通。同时拥有用于此目的的属性和鉴别器似乎是多余的,除非有一种方法可以将属性用作鉴别器?

最佳答案

实际上,这在 http://www.nhibernate.info/doc/nh/en/index.html#queryhql-where 中有详细记录:

Likewise, the special property class accesses the discriminator value of an instance in the case of polymorphic persistence. A .Net class name embedded in the where clause will be translated to its discriminator value.

 from Eg.Cat cat where cat.class = Eg.DomesticCat

您还可以将 System.Type 实例作为参数传递。

关于c# - NHibernate 中的鉴别器查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com