如何使用Criteria编写以下SQL:
select b.Name as Batch, b.Capacity as Capecity, a.tStudent as Admit, (b.Capacity-a.tStudent) as Availabe from ( SELECT count(Id) as tStudent, BatchId FROM [dbo].[Student] group by BatchId) as a left join [dbo].[Batch] as b on a.BatchId = b.Id
要使用NHibernate,产生如下查询:
SELECT ... FROM ( SELECT ... ) AS a ..
我们必须选择:
第一种选择是创建一些view,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 <subselect>:
view
<subselect>
<class name="MyEntity"... > <subselect> SELECT ... FROM ... </subselect> ...
第二种选择是关于使用NHibernate API创建本机/原始SQL:
session.CreateSQLQuery("SELECT ")
它没有从映射中获利,但是我们仍然可以应用参数,并从转换中获利…
9.3.5。本机SQL中的查询