对于在给定时间段内显示文章销售统计数据的近乎经典的任务,我偶然发现了一个有趣的问题:鉴于,我有一个包含文章编号,数量和日期的数据库表,我想将文章分组他们的金额是逐年(概述的最后两年)和按月精确的详细视图。
到目前为止,我的解决方案都基于Hibernate-Entity方法,只要我请求实体并使用以下策略将它们分组为Java
我想知道是否有更实用的方法利用SQL(使用Hibernate)的优点,理想情况下在Java中没有任何分组代码,我创建了一个小的SQL Fiddle示例(http://sqlfiddle.com/#!2/97a5d)来演示结果(2013 :8篇文章,2012年:18篇文章// 2013年9月:5篇文章,2013年6月:3篇文章,2012年6月:7篇文章,2012年2月:11篇文章)。
谢谢你到目前为止, Smutje
答案 0 :(得分:1)
您可以使用投影(例如sqlProjection)并将它们添加到您的休眠标准中以检索所需的结果。
例如来自here
的代码HibernateTemplate ht = new HibernateTemplate(sessionFactory);
DetachedCriteria criteria = DetachedCriteria
.forClass(Departments.class);
ProjectionList pl = Projections.projectionList();
pl.add(Projections.groupProperty("yearStarted"));
pl.add(Projections.sqlProjection("count(*) AS countOne, year_started AS ys",
new String[] { "countOne", "ys" }, new Type[] {
Hibernate.INTEGER, Hibernate.INTEGER }));
criteria.setProjection(pl);
List results = ht.findByCriteria(criteria);
System.out.println("Count : " + results.size());
System.out.println("First Value : " + results.get(0));