我在 Nhibernate Query Over fetch 上做错了什么吗?

2024-02-20

我有这个

   using (ITransaction transaction = session.BeginTransaction())
        {
            Task tAlias = null;
            CompletedTask cAlias = null;

            List<Task> tasks = session.QueryOver<Task>(() => tAlias)
                .Where(Restrictions.In(Projections.Property(() => tAlias.Course.Id), courseIds))
                .Fetch(pt => pt.PersonalTaskReminders).Eager
                .List<Task>().ToList().ConvertToLocalTime(student);


            transaction.Commit();

            return tasks;
        }

    PersonalTaskReminders == Collection

所以一个任务可以有很多个人任务提醒。我发现如果我设置 2 个personalTask​​Reminders(这样 PersonalTask​​Reminders 现在将在数据库的集合中有 2 行)

它返回相同的任务两次。

因此,如果我有 50 个针对该任务的个人任务提醒。我会得到同一任务的 50 个结果。我不明白为什么。

如果我删除急切加载。我按照预期从数据库中获取了一项任务。


这是显而易见的,因为急切的获取会导致与 2 个表的连接。要消除重复的结果,您应该使用不同的根实体转换器。

顺便说一句,NHibernate 提供了更好的语法IN条款。所以你的查询应该是这样的:

    var tasks = Session.QueryOver<Task>()
            .WhereRestrictionOn(x => x.Id).IsIn(courseIds)
            .Fetch(pt => pt.PersonalTaskReminders).Eager
            .TransformUsing(Transformers.DistinctRootEntity)
            .List<Task>();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我在 Nhibernate Query Over fetch 上做错了什么吗? 的相关文章

随机推荐

  • Node.js 服务器和客户端之间的变量

    我使用 Node js 运行一个简单的 http 服务器 var http require http var fs require fs var index fs readFileSync index html var sensor req
  • 将 YouTube Iframe API 与 Nativescript 结合使用?

    UPDATE 从 Manoj 下面的代码和其他一些来源 我现在可以将 youtube 播放器加载到基于 Youtube iframe api 的 webview 中 但问题仍然是 如何让我的应用程序识别视频本身何时开始播放 视频加载后以及任
  • Python:在主程序和 PEP 8 开头导入

    The PEP 8 http python org dev peps pep 0008 建议在程序开始时导入模块 现在 我觉得在开始时导入其中一些main程序 即 之后if name main 说得通 例如 如果主程序从命令行读取参数 我倾
  • 一个月内创建的 Rails 范围

    我在编写模型范围时遇到了一些问题 我想根据模型对象发布的月份来过滤模型对象 即模型 BlogPost scope published in month gt date where published date date at beginni
  • 如何指示 Ajax Minifier 从 javascript 中删除 console.log

    我的 js 文件中有这样的行 console log FunctionName 默认 Ajax Minifier 设置不会从 min js 输出中删除这些行 我在这次讨论中注意到关于终止开关的对话 http ajaxmin codeplex
  • idn-ruby 捆绑安装时出错

    我的应用程序中有 twitter text gem 当我进行捆绑安装时 出现以下错误 需要优先解决它 我也去了github页面https github com twitter twitter text issues 225 https gi
  • 图片来源UriKind

    我有一个项目 它的名称是 xx 我创建一个具有以下路径的文件夹 images xx bin 调试 图像 图像仅包含一张照片 其名称为 1 jpg 主窗口包含图像控件 我设置此代码来加载图像源 但它不起作用 为什么 private void
  • 在 AIR 应用程序安装屏幕上显示图标

    是否可以在 AIR 应用程序安装屏幕上显示图标 我下载了一个 AIR 应用程序 我很惊讶地在第二个安装屏幕上看到了一个图标 当您购买 SSL 证书并使用该证书构建 Air 应用程序时 安装过程中会显示此图标
  • SQLite:.Net 比原生慢得多?

    这是我的查询 SELECT FROM GeoName WHERE 26 3665122100029 Lat 26 3665122100029 Lat 27 5978928658078 Long 27 5978928658078 Long l
  • 4 年每日数据的滚动回归,每个新回归和不同因变量提前一个月

    我有 5 个自变量 附加数据中的 B F 列 和一些因变量 附加数据中的 G M 列 我需要针对所有自变量对每个因变量进行多重回归 回归必须有 4 年的数据窗口 并且每个新的估计都必须提前一个月 我需要提取系数并对每个系数进行 vasice
  • Android 图标下方的文本(按钮)

    我正在尝试创建一个主入口界面 我将创建六个按钮 每个按钮将打开另一个活动 对于每个按钮 我希望它有一个大图标 按钮下方有文字 目前 我可以在按钮上显示图像 但我不知道如何使文本显示在按钮下方 我尝试将文本直接放在图像上 但看起来不太好 这是
  • AngularJS : $pristine 用于 ng-check 检查输入

    我有一个包含大约 100 个问题的表单 每个问题都有一个单选按钮和一些复选框 因此我需要用户能够保存该表单并稍后加载 我还需要检查用户在本次会话中更改了哪些内容 这个问题解决了这个问题 如何表示 AngularJS 中哪些输入字段已更改 h
  • 如何将图像从aws s3下载到imageview中?

    所以我希望能够从我的 s3 存储桶中获取图像并 使用 glide 或 picasso 将该图像加载到 imageview 中 我不想将该图像下载到我的手机中 目前我有这个 downloadButton Button findViewById
  • 程序如何执行?操作系统在哪里发挥作用?

    程序从某种语言编译为 ASM gt 机器代码 直接可执行 当人们说这是平台相关时 意味着形成的二进制文件只能在具有相同指令集架构 如 x86 x86 64 的 CPU 上运行 正确 由于 ISA 的差异 它可能 错误地 可能 根本 不在其他
  • Matlab套接字等待响应

    我正在尝试在 matlab 中运行以下客户端和服务器套接字示例代码 http www mathworks com help instrument using tcpip server sockets html http www mathwo
  • 模板化的operator()重载C++

    有人已经问过这个问题 但该线程最终以原始问题没有得到回答 假设你有这个 template
  • Dart Isolates 的暂停功能未按预期工作

    我一直在玩飞镖分离物 https api dartlang org stable 1 24 3 dart isolate Isolate class html并在使用时遇到了问题isolate pause 功能 import dart io
  • 在 Web 应用程序中的何处存储数据库凭据?

    我想知道您使用什么技术来存储应用程序的数据库凭据 我特别关心 java webapps 但我认为没有必要将问题限制于此 需要考虑的事情 您是否使用属性文件 xml 配置文件或其他文件 它是捆绑到您的应用程序中 即在 jar 文件中 还是单独
  • com.google.android.gms.maps.MapFragment:无法解析符号“地图”

    我已遵循此处的所有指示 没有任何问题 https developers google com maps documentation android start getting the google maps android api v2 h
  • 我在 Nhibernate Query Over fetch 上做错了什么吗?

    我有这个 using ITransaction transaction session BeginTransaction Task tAlias null CompletedTask cAlias null List