2010-07-23 43 views
3

我有以下proprtyNHibernate的:有条件加载计算列

<property name="Allocated" type="decimal" formula="(select sum(a.AllocationAmount) from Allocation a where a.TransactionId = TransactionId)" /> 

这会将已分配给它的工作精美发票交易的金额。

但是,大多数情况下我并不关心这个数量。有没有办法有条件地加载这个计算列?或者有没有办法将这个计算列添加到HQL/Critera中,这样我就可以将它作为我运行的特定查询的一部分?

回答

2

如果您在属性映射上指定access="none",则可以将属性保留在对象模型之外,但仍然使用hql对其进行查询。有关更多信息,请参阅this article

此外,您可以因素是逻辑为功能,使用自定义的方言,然后查询/使用标准的API(通过Projections.SqlFunction)就可以了项目

注册它