在其他查询的结果上执行nHibernate icriteria(两个不同的查询)

时间:2013-11-27 15:14:13

标签: nhibernate criteria nhibernate-criteria

有没有办法将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的结果)。请注意,我对第一个查询的结果有一个选择/限制,同时在第二个查询的投影中包含其中一个列。

使用字符串动态生成标准以识别类。

1 个答案:

答案 0 :(得分:1)

我能想到的最接近的是Common Table Expression(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小提琴:http://sqlfiddle.com/#!3/8e6877/7