NHibernate - CreateSqlQuery只返回一行

时间:2012-08-02 12:52:34

标签: nhibernate

我是nhibernate的新手......我创建了一个SQL查询(点击Oracle数据库),返回自定义结果集......

enter image description here

我尝试将这些结果映射到这样的自定义对象中...(此对象不是持久对象,并且不包含nhibernate映射文件)   enter image description here

问题是,当我在Oracle数据库中执行这个sql查询时,它给了我所有4条记录,但是如果我从代码中执行此操作,我只得到一条记录(结果只有一个项目)。

我在这做错了吗?

2 个答案:

答案 0 :(得分:0)

在NHibernate中启用sql日志记录并检查实际执行的问题。

尝试setting projections,以便变换器知道如何映射数据。

答案 1 :(得分:0)

它是你的Id专栏,缺乏它! NHibernate无法确定ResultSet中唯一的行。因此NHibernate只会填充第一级缓存一次,因为它将所有四行视为重复。

您有两种选择: -

    在您的视图中,
  1. 会返回一个唯一的ID,这是一个唯一的ID,尽管根据您的架构判断看起来不可能 OR

  2. 您需要在视图地图类中覆盖equals和GetHashCode,有关详细信息,请参阅此博客enter link description here