【问题标题】:How to QueryOver a list of string in NHibernate如何在 NHibernate 中查询字符串列表
【发布时间】:2016-02-17 11:30:43
【问题描述】:

我有一个带有以下字符串列表的用户模型 -

    private ISet<String> _mobileNumbers;

    public virtual ISet<String> MobileNumbers
    {
        get { return _mobileNumbers ?? (_mobileNumbers = new HashedSet<String>()); }
        set { _mobileNumbers = value; }
    }

我需要在此表上编写 NHibernate QueryOver 以获取具有特定手机号码的用户列表。有点像 -

String mobileNumber = null;
Repository.QueryOver<User>()
            .JoinAlias(u => u.MobileNumbers, () => mobileNumber)
            .WhereRestrictionOn(() => mobileNumber)
                .IsLike(searchedMobileNumber, MatchMode.Exact);

我曾想过为 MobileNumber 创建一个模型,或者编写一个 SQL 查询来做同样的事情。但是还有其他选择吗??

【问题讨论】:

  • 你测试了吗?它有效吗?遗憾的是,在没有显式实体的情况下定义映射对于编写映射要简单得多,但对于编写查询要复杂得多。
  • 不,它不起作用。它给出空指针异常。 :(
  • 我已经做了一些测试......虽然在 HQL 中可以做到(参见 stackoverflow.com/a/23152387/613130),但在 QueryOver 中我认为这是不可能的。可能是缺少的功能。
  • 应该在 LINQ 查询中工作以保持类型安全(与 HQL 相比)。

标签: sql nhibernate queryover


【解决方案1】:

NHibernate QueryOver 中不受支持:例如参见 QueryOver - add restriction on primitive collection

它在“纯”HQL 查询中受支持,例如在 https://stackoverflow.com/a/23152387/613130 中编写的。

【讨论】:

  • 谢谢。我最终为 mobileNumber 创建了一个模型。工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 2021-01-18
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多