zoukankan      html  css  js  c++  java
  • 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表的数据出来了....

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

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

  • 相关阅读:
    linux命令---常用组合
    linux---进程相关的命令
    linux命令---系统监控
    linux命令---find
    linux命令---sort
    linux命令---tar
    linux命令---split
    linux命令---awk进阶
    log4net使用方法
    URL编码:不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。
  • 原文地址:https://www.cnblogs.com/zjoch/p/2114407.html
Copyright © 2011-2022 走看看