如何用hibernate条件表达此查询。
SELECT anId, SUM(fieldA) AS A, SUM(fieldB) AS B, SUM(fieldA)+SUM(fieldB) AS 'total' FROM tableA GROUP BY anId ORDER BY 'total' DESC LIMIT 5
符合以下条件的技巧
Criteria criteria = hibernateSession
.createCriteria(YourEntity.class);
criteria.setProjection(Projections
.projectionList()
.add(Projections.property("anId").as("prop1"))
.add(Projections.sum("fieldA").as("prop2"))
.add(Projections.sum("fieldB").as("prop3"))
.add(Projections.sqlProjection(
"sum(fieldA) + sum(fieldB) as total",
new String[] { "total" },
new Type[] { StandardBasicTypes.INTEGER }), "total")
.add(Projections.groupProperty("remarks")));
criteria.addOrder(Order.desc("total"));
criteria.setMaxResults(5);
criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List list = criteria.list();
for (Object object : list) {
Map<Object, Object> map = (Map<Object, Object>) object;
System.out.println(map);
}
问题内容: 可以使用Hibernate标准吗? 问题答案: 我遇到了完全相同的问题,并且能够像这样解决它: 注:,和在上面的代码指在属性名,和类,相应地(类具有属性等)。 对于此解决方案,您甚至不需要在中设置和参数。
问题内容: 基本上,我的问题与这一问题相同,但是对于Java的(JBoss)Hibernate:我们如何使用hibernate标准API将列作为int排序?我想创建一个从字符串列转换为int的订单限制。就像是 唯一的例外是“无法解析属性:[Class]的演员表(id为int)”。我已经尝试过使用int和integer进行cast(as)和convert(,)。 问题答案: 尽管主题很旧,可能是问题
问题内容: 在按列对desc排序时,与PostgreSQL DB一起使用的Hibernate会将空值设置为大于非空值。 SQL99标准提供了关键字“ NULLS LAST”来声明应将空值设置为低于非空值。 使用Hibernate的Criteria API是否可以实现“ NULLS LAST”行为? 问题答案: 鉴于HHH-465尚未修复,并且由于史蒂夫·埃伯索尔(Steve Ebersole)给出
问题内容: 我正在使用Hibernate Criteria尝试实现分页,但是问题是,对于每个页面提取,我必须进行两个数据库调用,一个用于结果,另一个用于总记录数。有什么有效的方法,以便在一个数据库调用中我既可以获取数据,又可以减少数据库调用。 问题答案: 是的,您需要单独的查询来获取总结果计数。 要么 更新资料 现在,您可以对分页和结果计数使用相同的条件
问题内容: 如何将sql查询写入休眠条件? 问题答案: 认为我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:
问题内容: 我正在尝试实现一个Hibernate会话/事务拦截器,以避免Struts2中的json结果出现,但无论如何我都会得到此异常: 我的拦截器如下所示: 这是行不通的,我越来越之前甚至和 问题答案: 好的,最后我解决了将通用DAO注入(带有会话和事务)添加到genericAction的问题。这适用于带有惰性hibernatebean的JSONResults和jsp。 感谢您对“ bmorri