nhibernate - 对其他查询的结果执行 nHibernate icriteria(两个不同的查询)

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

标准是使用字符串动态生成的,以标识类。

最佳答案

我能想到的最接近的东西是公共(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/

相关文章:

c# - 如何将复合外键映射到 FluentNHibernate 中的非主唯一键?

java - Hibernate Criteria 和多重连接

sql - Grails withCriteria,两个数据库列之间的值?

nhibernate - 流利的 NHibernate 和过滤一对多关系需要多个连接的查询?

sql - NHibernate - 查询中的列错误

NHibernate 标准和预测

c# - NHibernate.Spatial 和 Sql 2008 地理类型

c# - 将 MyGeneration 与 Fluent NHibernate 结合使用

nhibernate - 如何在 NHibernate 中使用左连接查询实现分页

java - 不使用PreparedStatements Criteria-API 的 SQL 转义