gpt4 book ai didi

NHibernate - 使用 Criteria API 对整数列进行 LIKE 搜索的最简单方法?

转载 作者:行者123 更新时间:2023-12-03 12:30:13 25 4
gpt4 key购买 nike

我正在尝试对整数列进行类似搜索,我需要做的实际上是将该列转换为 varchar,然后进行类似搜索。这可能吗?使用 Criteria API 执行此操作的最简单方法是什么?

var search = "123";
criteria.Add(Restrictions.Like("Number", "%" + search + "%"))

最佳答案

如果 Number 是一个字符串,那么这很容易:

.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))

因为你有一个数字,NHibernate 会检查数字的类型,如果你给它一个字符串,它会抛出一个异常。

不知道为什么 NH 团队没有提供带有对象作为参数和 MatchMode 参数的重载......

无论如何,你仍然可以这样做:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))

编辑

关于别名:

(我找不到文档在哪里谈论这个,但这是我对它的理解)

{alias} 返回 NH 在内部为最新的 CreateCriteria 使用的别名。所以如果你有:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();

{alias} 在这种情况下将是 'doc' - 所以你最终会得到: doc.Number 。

因此,始终在需要使用其别名的 CreateCriteria 之后使用 {alias}。

关于NHibernate - 使用 Criteria API 对整数列进行 LIKE 搜索的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1231054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com