无法将集合与 InExpression 一起使用

2023-12-14

我刚刚深入研究了一些 NHibernate,但我在必须编写的一个更“复杂”(对我来说!)的查询中遇到了麻烦。场景是:

我有一个“员工”对象,其中附加了一系列“技能”。我想传递一个“技能”列表来查询(例如,如果我只想要可以“烹饪”或“编码”或两者兼而有之的人)并返回匹配员工的列表,但我有有点麻烦……

我所得到的对象方面是:

public class StaffMember : Resource
{
    public virtual string EmployeeId { get; set; }      

    public virtual bool IsTeamLeader { get; set; }

    public virtual StaffMember TeamLeader { get; set; }

    public virtual IList<Skill> Skills { get; set; }
}

public class Skill : BaseDomainObject
{
    public virtual string Name { get; set; }
}

我猜 SQL 会是这样的:

select distinct st.*
from staff st, resource re
inner join staffskills sks on re.id = sks.staffresourceid
inner join skill ski on ski.id = sks.skillid
where st.resourceid = re.id
and ski.id in (1,2,3,4)

我尝试在标准中使用“Expression.InG("Skills", SkillsSearchList)”,但是当两个集合同时使用时不能使用(例如,如果他们只有一项技能,那就没问题了!)。 .有什么指示吗?


你需要

.CreateAlias("Skills", "sks")
.Add(Restrictions.In("sks.id", skillIdList))

我不确定这是否可以通过技能对象列表来完成。无论哪种方式,sql 的最终结果都与上面相同。

请注意,这将创建一个笛卡尔积,因此您可能需要使用存在子查询或.SetResultTransformer(new DistinctRootEntityResultTransformer())获取不同员工的列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将集合与 InExpression 一起使用 的相关文章

随机推荐

  • 如何从 openMP 中的线程生成子线程 (C++)

    我正在尝试构建一棵具有固定数量的子级和固定深度的树 我不完全理解 openMP 的底层机制 调用后开始构建树build root node 0 现在我们假设maxDepth给定一个任意数并且maxChildren等于n When build
  • Sharpsvn 日志消息编辑 Sharpsvn?

    使用sharpsvn 具体修订日志消息要更改 它的实现类似于 svn 的 show log edit logmessage 我英语很尴尬 所以 帮助你理解 我的代码已附上 public void logEdit Collection
  • 使用 JQuery 处理 PHP 异常

    我正在使用 JQuery 调用 PHP 函数 该函数在成功时返回 JSON 字符串或引发一些异常 目前我正在打电话jQuery parseJSON 在响应上 如果失败 我假设响应包含异常字符串 ajax type POST url some
  • 我听说 i++ 不是线程安全的,++i 线程安全吗?

    我听说 i 不是线程安全的语句 因为在汇编中它减少为将原始值存储为临时值 递增它 然后替换它 这可能会被上下文切换中断 但是 我想知道 i 据我所知 这将减少为一条汇编指令 例如 add r1 r1 1 并且由于它只是一条指令 因此它不会被
  • 后台Worker实现

    这是我的后台工作DoWor函数 考虑到GUI操作的实现好吗 private void backgroundWorker1 DoWork object sender System ComponentModel DoWorkEventArgs
  • C# Flurl - 将 WebRequestHandler 添加到 FlurlClient

    我正在与Flurl访问需要基于证书的身份验证的 API 我已经看到从这个帖子将证书添加到WebRequestHandler并指示HttpClient使用这个处理程序很容易 然而 我对 Flurl 的使用不太清楚 我尝试过以下三件事 扩展 D
  • 将数据从 javascript 弹出多行文本框传输到选择控件

    我正在尝试将数据从多行文本框传输到选择控件 多行文本框显示为弹出窗口 我希望用户在弹出窗口中单击 提交 后 将粘贴在文本框中的所有记录传输到选择控件 可能使用 jquery 或 javascript 或者其他东西 该页面是用 MVC3 Ra
  • 使用 XPutImage 显示 png 文件不起作用

    我尝试使用 xputimage 在 xwindow 中显示 png 文件 但 xputimage 抛出以下错误 窗口宽度 426 高度 341 X 请求失败错误 BadMatch 参数属性无效 失败请求的主要操作码 72 X PutImag
  • 用于创建具有特定名称的新文件的 Github URL?

    我知道你可以使用这个网址github com
  • JS - import '@foo/bar' 中 @ 的含义

    在阅读本文时article早些时候 我遇到了以下代码行 import run from cycle core 这让我产生了以下问题 有何意义 符号 如果有的话 之间有区别吗import foo bar and import foo bar
  • 如何在 HTML 中嵌入 SWF?

    如何在 HTML 中嵌入 SWF 非官方行业标准是使用SWF对象 文档
  • Windows 上的 Erlang 列表理解乘法给出“\f”

    大家好 我在 Windows 上运行 Erlang 时遇到一个奇怪的问题 我运行的是 16B 和 WinXP 我有以下代码 module test export cost 1 total 1 cost orange gt 5 cost ap
  • Azure 连接字符串异常“发生与网络相关或实例特定的错误”

    尝试使用以下连接字符串连接到 SQL Azure 时 服务器 tcp SERVER database windows net 1433 数据库 DBNAME 用户ID USER SERVER 密码 PASSWORD Trusted Conn
  • 在生产 Azure Service Fabric 群集中找不到 libsodium-64.dll

    在 Azure Service Fabric 可靠服务中使用 libsodium net 来发挥其所有安全优势 在我的本地开发集群上 一切都工作正常 尽管我必须将 libsodium 64 dll 设置为复制到输出目录 不幸的是 当部署到
  • 如何从 apply.monthly 函数中提取日期

    如果我有一组每日数据 我想获取每个月的最小值以及该值发生的日期 如果我使用apply monthly函数 它给了我最小值 但相应的日期是每个月的月底 而不是实际发生的日期 我怎样才能得到正确的日期 library xts create sa
  • 当传递大的逗号分隔值时,使用自定义 TABLE TYPE 作为参数而不是 SQL“IN”子句是否更好

    我有一个存储过程 它接受逗号分隔的字符串作为输入 有时可能太大 大约超过 8000 个字符或更多 在这种情况下 查询性能有时会下降 我认为里面的字符长度有限制IN条款 为此 有时我会遇到错误 现在 我需要知道使用自定义表类型作为参数并使用是
  • R 查询 '$'()

    我创建了一个数据框并尝试访问数据框中的列 代码如下图 df lt data frame n c A B C mark 1 c 23 25 17 mark 2 c 45 46 50 j lt paste mark 1 sep j f lt d
  • LUIS 应用程序无法训练 - 应用程序训练失败:l_general:重新训练

    我无法再构建和训练我的调度员 LUIS 应用程序 如果我尝试运行调度 CLI 来刷新我的调度程序模型 例如dispatch refresh dispatch mydispatchfile dispatch 它会挂在训练调度模型上 并最终返回
  • 在 Magento 中以编程方式添加面包屑路径?

    在 Magento 中 当用户直接访问产品页面 例如从 Google 时 面包屑导航将仅为 主页 gt 产品名称 即使用户直接从 Google 访问页面 我如何在其中添加类别 例如 关于这一页 我想在面包屑中添加 婚礼服装 和 婚礼礼服 类
  • 无法将集合与 InExpression 一起使用

    我刚刚深入研究了一些 NHibernate 但我在必须编写的一个更 复杂 对我来说 的查询中遇到了麻烦 场景是 我有一个 员工 对象 其中附加了一系列 技能 我想传递一个 技能 列表来查询 例如 如果我只想要可以 烹饪 或 编码 或两者兼而