有没有办法使用 ICriteria 结果作为后续条件查询的“基础”?
例如,如果我想创建一个查询
SELECT department_id, sum(cost) AS total
FROM payment
GROUP BY payment.department_id
将结果存储为query0
,然后执行查询
SELECT department.name, total
FROM department, query0
JOIN LEFT ON department.id=query0.id
WHERE total > 3
我不想一次执行一个巨大的查询(这将是创建带有子查询的 ICriteria 的结果)。请注意,我对第一个查询的结果进行了选择/限制,同时在第二个查询的投影中包含其其中一列。
标准是使用字符串动态生成的,以标识类。
最佳答案
我能想到的最接近的东西是公共(public)表表达式(SQL WITH
语句)。不幸的是,NHibernate 似乎没有任何好的抽象来处理 CTE,但以下是您的查询在 SQL Server 中的外观:
WITH query0 AS (
SELECT department_id AS id, sum(cost) AS total
FROM payment
GROUP BY payment.department_id
)
SELECT department.name, total
FROM department, query0
WHERE department.id=query0.id
AND total > 3;
SQL fiddle :http://sqlfiddle.com/#!3/8e6877/7
关于nhibernate - 对其他查询的结果执行 nHibernate icriteria(两个不同的查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246133/