有没有办法将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的结果)。请注意,我对第一个查询的结果有一个选择/限制,同时在第二个查询的投影中包含其中一个列。
使用字符串动态生成标准以识别类。
答案 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;