正如您可能已经猜到的,亲爱的社区,我有一个问题要问您。所以。
我希望 NHibernate 根据表值 sql 函数的评估来过滤查询结果。
NHibernate 生成的可能的 SQL 查询可能类似于以下内容:
SELECT
[whatever]
FROM
[whatever]
INNER JOIN dbo.FnMyTableValuedFunction() as MyAlias ON
[whatever].FirstDesiredKey = MyAlias.FirstDesiredKey
AND
[whatever].SecondDesiredKey = MyAlias.SecondDesiredKey
或者也可以这样写:
SELECT
[whatever]
FROM
[whatever]
WHERE
EXISTS(
SELECT
1
FROM
dbo.FnMyTableValuedFunction() AS MyAlias
WHERE
[whatever].FirstDesiredKey = MyAlias.FirstDesiredKey
AND
[whatever].SecondDesiredKey = MyAlias.SecondDesiredKey
)
我想使用 Criteria API 生成这样的查询。
据我所知,没有办法告诉 NHibernate 它应该加入什么以及如何加入。因此,可能存在的一种解决方案是第二种。
不幸的是,我没有足够幸运地了解如何使用表值函数作为相关子查询的查询源。你能帮我解决这个问题吗?
除 SQL(HQL、Criteria、Linq、QueryOver)之外的所有 NHibernate 查询方法都适用于实体,而不适用于表或任何其他数据库工件。
因此,如果您使用 Criteria,则需要映射FnMyTableValuedFunction
到一个实体,或使用SQLCriterion
对于任意 SQL 块。
对于后者,是的,EXISTS
可能是要走的路。您可以将整个条件(包括 EXISTS)包含在 SQLCriterion 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)