- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对此进行了一些搜索,但没有发现任何东西。是否可以创建一个 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/
我写了一段代码,在比特流中连续 6 个“1”后添加一个“0”。但是如何解码呢? 这里是一个比特流的例子: original = {01101111110111000101111110001100...
我是一名优秀的程序员,十分优秀!