我想这样做:
SELECT * FROM Table where (FieldA + FieldB > 90)
使用hibernate。
我知道我可以获取所有对象然后在Java中执行操作,但是有很多数据,我希望能够在一个简单的请求中完成它。 谢谢!
答案 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
现在它正在工作:)