如何用Hibernate对两列进行求和

时间:2015-03-23 15:24:38

标签: hibernate

我想这样做:

SELECT * FROM Table where (FieldA + FieldB > 90)

使用hibernate。

我知道我可以获取所有对象然后在Java中执行操作,但是有很多数据,我希望能够在一个简单的请求中完成它。 谢谢!

4 个答案:

答案 0 :(得分:1)

您只需将其用作SQL查询:

SELECT * FROM Table where (FieldA + FieldB) > 90;

它完美无缺。

答案 1 :(得分:1)

我认为你可以使用HQL或Criteria。

如果您使用HQL,则必须执行以下操作:

from Table as t where (t.FieldA + t.FieldB) > 90

如果使用Criteria,则应使用Restrictions.sqlRestriction方法:

Criteria c = session.createCriteria(Table.class);
c.add(Restrictions.sqlRestriction("(FieldA + FieldB) > 90"));

我希望这些信息可以帮到你。

祝你好运。

答案 2 :(得分:0)

似乎可以使用HSQL完成:

select cat.weight + sum(kitten.weight) 
from Cat cat 
    join cat.kittens kitten
group by cat.id, cat.weight

BUT!如果on的数字为null,则结果为null ...当我需要将null视为0时,所以这不起作用

答案 3 :(得分:0)

谢谢大家的回答。 解决方案确实是

from Table as t where (t.FieldA + t.FieldB) > 90

除了为了将null视为0,我必须使用COALESCE(或isnull)

from Table as t where (COALESCE(t.FieldA,0) + COALESCE(t.FieldB,0)) > 90

现在它正在工作:)