NHibernate中是否有办法将计数查询的结果映射到类的属性?我想在XML映射中执行此操作。
我知道我可以通过代码(通过实际查询计数的构造,或通过作弊,执行完整查询,并计算结果项)来表达这一点,但如果我能写一些简短的SQL会很好或HQL并以某种方式将其插入到我的XML映射中。
一个具体的例子。我的DB有这些表 -
Entry
Id
BodySummary
Comment
Id
EntryId
Body
我想获得一些条目摘要。对于每个条目,我想得到评论计数(和正文摘要)。
仅供参考:我省略了我的数据库中不相关的部分,例如作者,条目标题/正文,时间戳等。这当然应该与我询问的查询部分无关。
答案 0 :(得分:6)
我认为你不能用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>
重要提示:
您可能希望将其设为只读字段,但这是您如何映射它的基础知识。
结果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_