从HQL返回额外数据

时间:2010-08-30 12:10:58

标签: c# sql database nhibernate hql

我正在编写一个HQL查询,格式为:

from a where ... or exists (from b inner join b.c where ...) and ...

我从此查询中获取了a类型的实体。但是,我还需要知道exists子句是否在我的代码中回复了。如果这是SQL,我会将它添加到选择列表中。但是,即使我添加到HQL select子句,它也会变为:

select a, exists (from b inner join b.c where ...) as x from a where ... or x and ...

在我的代码中,我现在必须选择查看无类型数据,或查看a类型的类型实体,并丢弃随之回来的值x

有没有办法以某种方式获取类型数据加上额外的列?

1 个答案:

答案 0 :(得分:3)

我看到你有两个选择:

1)将附加属性作为只读映射属性添加到您的实体,利用formula映射来使用内联sql或udf派生值。

2)使用自定义hql查询仅获取您所需的数据并使用aliastobeanresulttransformer投影到包含您感兴趣的字段的强类型dto。

你去哪条路线真的取决于你,但我倾向于倾向于选项#2,以免污染你的域模型中不需要的字段。