我觉得你不能用HQL来做。但下面是如何使用SQL:
<class name="Entry" .... >
<id>
//ID Strategy
</id>
<property name="BodySummary" />
...
<property name="CommentCount" formula="(SELECT COUNT(*) FROM Comment c WHERE c.EntryId = Id)" type="Int32" />
</class>
重要注意事项:
-
-
这不是HQL-必须使用数据库列/表名,而不是映射的类/属性
-
提供返回类型,以便NHibernate知道如何将其映射回属性
您可能希望将此字段设为只读字段,但这是映射它的基本方法。
生成的SQL如下:
SELECT this_.Id as Id11_0_,
this_.BodySummary as BodySummary10_11_0_,
(SELECT COUNT(* )
FROM Comment c
WHERE c.EntryId = this_.Id) as formula0_0_
FROM Entry this_