0

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

在此处输入图像描述

我尝试将这些结果映射到这样的自定义对象中......(这个对象不是持久对象并且不包含休眠映射文件) 在此处输入图像描述

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

我在这里做错了吗?

4

2 回答 2

0

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

尝试设置投影,以便转换器知道如何映射数据。

于 2012-08-02T13:02:41.210 回答
0

它是您的 Id 列,缺少它!NHibernate 无法计算出您的ResultSet. 因此,NHibernate 只填充一级缓存一次,因为它认为所有四行都是重复的。

你有两个选择:-

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

  2. 您需要在视图地图类中覆盖 equals 和 GetHashCode,请参阅此博客在此处输入链接描述以获取更多信息。

于 2012-08-02T16:29:13.167 回答