我是nhibernate的新手......我创建了一个SQL查询(点击Oracle数据库),返回自定义结果集......
我尝试将这些结果映射到这样的自定义对象中...(此对象不是持久对象,并且不包含nhibernate映射文件)
问题是,当我在Oracle数据库中执行这个sql查询时,它给了我所有4条记录,但是如果我从代码中执行此操作,我只得到一条记录(结果只有一个项目)。
我在这做错了吗?
答案 0 :(得分:0)
在NHibernate中启用sql日志记录并检查实际执行的问题。
尝试setting projections,以便变换器知道如何映射数据。
答案 1 :(得分:0)
它是你的Id专栏,缺乏它! NHibernate无法确定ResultSet
中唯一的行。因此NHibernate只会填充第一级缓存一次,因为它将所有四行视为重复。
您有两种选择: -
会返回一个唯一的ID,这是一个唯一的ID,尽管根据您的架构判断看起来不可能 OR
您需要在视图地图类中覆盖equals和GetHashCode,有关详细信息,请参阅此博客enter link description here。