我是 nhibernate 的新手......我创建了一个 SQL 查询(命中一个 Oracle 数据库),它返回这样的自定义结果集......
我尝试将这些结果映射到这样的自定义对象中......(这个对象不是持久对象并且不包含休眠映射文件)
问题是当我在 Oracle 数据库中执行这个 sql 查询时,它给了我所有 4 条记录,但是如果我从代码中执行它,我只得到一条记录(结果只有一项)。
我在这里做错了吗?
我是 nhibernate 的新手......我创建了一个 SQL 查询(命中一个 Oracle 数据库),它返回这样的自定义结果集......
我尝试将这些结果映射到这样的自定义对象中......(这个对象不是持久对象并且不包含休眠映射文件)
问题是当我在 Oracle 数据库中执行这个 sql 查询时,它给了我所有 4 条记录,但是如果我从代码中执行它,我只得到一条记录(结果只有一项)。
我在这里做错了吗?
在 NHibernate 中启用 sql 日志记录并检查实际正在执行的问题。
尝试设置投影,以便转换器知道如何映射数据。
它是您的 Id 列,缺少它!NHibernate 无法计算出您的ResultSet
. 因此,NHibernate 只填充一级缓存一次,因为它认为所有四行都是重复的。
你有两个选择:-
在您看来,返回一个唯一 ID,这是一个唯一 ID,尽管根据您的架构判断,这看起来不可能,或者
您需要在视图地图类中覆盖 equals 和 GetHashCode,请参阅此博客在此处输入链接描述以获取更多信息。