NHibernate-CreateSqlQuery只返回一行

NHibernate-CreateSqlQuery只返回一行,nhibernate,Nhibernate,我是新来的nhibernate。。。我创建了一个SQL查询(点击Oracle数据库),它返回如下自定义结果集 我尝试将这些结果映射到这样一个自定义对象…(此对象不是持久对象,并且不包含nhibernate映射文件) 问题是,当我在Oracle数据库中执行此sql查询时,它会给出所有4条记录,但是如果我从代码中执行此查询,则只会得到一条记录(结果仅为一项) 我在这里做错了什么吗?在NHibernate中启用sql日志记录,并检查实际执行的问题 试着让transformer知道如何映射数据。这是

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

我尝试将这些结果映射到这样一个自定义对象…(此对象不是持久对象,并且不包含nhibernate映射文件)

问题是,当我在Oracle数据库中执行此sql查询时,它会给出所有4条记录,但是如果我从代码中执行此查询,则只会得到一条记录(结果仅为一项)


我在这里做错了什么吗?

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


试着让transformer知道如何映射数据。

这是您的Id列,但是缺少它!NHibernate无法计算出
结果集中的唯一行是什么。因此,NHibernate只填充一次一级缓存,因为它将所有四行都视为重复行

您有两个选择:-

  • 在您的视图中,返回一个唯一的id,该id是唯一的id,尽管根据您的模式判断,它看起来不可能

  • 您需要在视图映射类中重写equals和GetHashCode,有关更多信息,请参阅本博客


  • 很抱歉,在格式化过程中出现了一些问题…上传了sql,然后从日志中提取了sql并执行了它,仍然从sql Developer中获取了4条记录。但从代码运行时,它只返回1个结果。我认为我不能使用项目,我正在执行本机sql#您必须使用
    addScalar()
    方法调用来设置它们。你可以查一下。