Nhibernate 继承类 映射 无结果

我系统中有一个任务表,物理表分为当前任务表A和历史任务表B;两个表的字段都一样,于是我想偷懒,就将对象B继承自对象A,并且在NHIBERANTE映射文件中将表A与表B分别映射对象A与对象B;原以为这样映射后,在读取表A和表B的纪录都没问题;

         但是事与愿违,程序实际执行结果却是什么也没有(A表有数据,B表没数据),我的HQL根本没有任何条件,按理说数据应该全部读取出来,但是实际上一条数据都没出来;查看了数据库连接,查看了对象A的属性,查看了NHIBERNATE的版本,等等等等,折腾了半天.

  做了很多事情,但是还是没有找到原因;最后把A重新命名为C,然后再查询,发现数据全部出来了,很是郁闷;

于是再进一步推理,发现B继承自A,在映射中A先,B后,于是大胆猜想,难道NHIBERNATE没有采用我继承后的对象B,而是采用了基类A,这样在映射文件中,势必会以最后一次注册的映射为准,也就是说虽然访问的是A表的数据,但是访问却被重定向到了B表;

然后我让B不继承自A ,把A的所有属性全部拷贝到B,再次执行查询,奇迹出现了,A表的数据出来了....

我觉得上面遇到的问题应该和经验有关系,当时为了省去一个相同对象的申明,偷懒采用了继承,但是实际结果却让人摸不着头脑;

看来以后还是少去"投机取巧"! 

posted @   遥望星空  阅读(284)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示