Nhibernate 单独表的继承关系
来源:互联网 发布:程序员的网站有哪些 编辑:程序博客网 时间:2024/05/22 01:38
原先项目使用A表--类名AItem,后来项目需要增加了相同结构的B表--类名BItem,并继承AItem,在使用HQL查询过程中发现,From AItem 会被替换成From BItem,查资料后,发现是NHibernate的继承机制:
在NHibernate中是用多态(polymorphism
)来进行描述两个继承于同一父类的子类情况,在映射文件的Class节点中也有一个polymorphism
的属性用来设定是
隐式还是显式的使用查询多态,为什么我们的映射类中没有出现这个属性的设定呢,polymorphism
= implicit
是默认的。所以我们如果进行的是隐式的查询就可以不用进行设定。以下是摘自博客园renrenqq 翻译的NHibernate中文文档中对polymorphism的解释:
Implicit (隐式)的多态是指,如果查询中给出的是任何超类、该类实现的接口或者该类的名字,都会返回这个类的实例;如果查询中给出的是子类的名字,则会返回子类的实例。Explicit (显式)的多态是指,只有在查询中给出的明确是该类的名字时才会返回这个类的实例;同时只有当在这个 <class>
的定义中作为 <subclass>
或者 <joined-subclass>
出现的子类,才会可能返回。 大多数情况下,默认的polymorphism="implicit"
都是合适的。 显式的多态在有两个不同的类映射到同一个表的时候很有用。(允许一个“轻型”的类,只包含部分表字段)。
解决方案:修改AItem的映射文件:class 增加 polymorphism="explicit"。
- Nhibernate 单独表的继承关系
- nhibernate的关系
- nhibernate的一对多关系
- NHibernate映射关系表(实体映射文件字段的属性对应的NHibernate类型)
- Ado.net 与NHibernate的关系
- nhibernate 一对多的配置关系
- Hibernate的继承关系
- Hibernate的继承关系
- C++的继承关系
- C++的继承关系
- 继承关系的映射
- Adapter的继承关系
- 继承的关系图!
- hibernate的继承关系
- log4j的继承关系
- 继承的关系
- JAVA的继承关系
- PullToRefresh 的继承关系
- Flex Builder 3.0 plugin 在 Zend 中的安装
- 努力做到最好
- pack and unpack
- js日历控件
- 在apache中设置环境变量和PHP的区别
- Nhibernate 单独表的继承关系
- 关闭oracle10g的archive log
- 先睹为快:Windows 7主要功能改进一览[图]
- SQL语句——查询记录的数量
- 调用CoCreateInstance 函数创建IGraphBuilder 返回值-2147221008 出现错误--directx9 directshow
- wxWidget的编译(window & linux)
- 在SQL Server中使用种子表生成流水号注意顺序
- css命名规范
- java的一些问题:spring