如何使用Hibernate求和两列



我想做:

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

使用hibernate。

我知道我可以获得所有的对象,然后用Java进行操作,但有很多数据,我希望能够在一个简单的请求中完成。非常感谢。

您可以简单地将其用作SQL查询:

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

而且效果非常好。

我认为您可以使用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"));

我希望这些信息对你有所帮助。

祝你好运。

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

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

除了为了将null视为0,我不得不使用COALESCE(或ifnull)

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

现在它正在工作:)

似乎可以使用HSQL:来完成

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

但是!如果数字的on为null,则结果为null。。。当我需要null被视为0时,所以这不起作用

最新更新