【问题标题】:NHibernate returning duplicate rows from hql named query with object constructorsNHibernate 从带有对象构造函数的 hql 命名查询返回重复行
【发布时间】:2011-08-04 00:08:35
【问题描述】:

我有一个命名的 hql 查询,它使用对象构造函数来处理未映射的对象(仅导入)

例如

select distinct new NotMappedResultClass(ah.SomeProp1, ah.SomeProp2)
from SomeMappedClass
where ...
order by ah.SomeProp1

奇怪的是,当我在 NHibernate 中调用 IQuery.List() 时,我最终得到的 NHibernate 行数是 NHibernate 运行的查询的两倍(使用 SqlProfiler 跟踪)。

(如果重要,“where”子句确实涉及一些子查询)。

为什么 NHibernate 会复制从数据库返回的行?

(我使用的是 NHibernate 1.2.1.4000)

【问题讨论】:

    标签: nhibernate hql


    【解决方案1】:

    找到问题了。

    当涉及到继承类时,我的项目有一些奇怪的映射。

    基本上,SomeMappedClass 是抽象的,并且有自己的 NHibernate 映射,还有一个派生类 SomeDerivedClass(没有添加任何功能),它也是单独映射的,没有“extends”属性。

    这导致 NHibernate 发出两个 sql 查询,同一张表具有不同的别名。

    在我的情况下,简单快速而肮脏的解决方案是从 SomeDerivedClass 而不是 SomeMappedClass 进行查询,但更合适的解决方案可能是修改映射/对象继承。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      相关资源
      最近更新 更多