我想做:
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时,所以这不起作用