关于JPA查询的问题

苹果的小弟 2012-04-01 02:23:15
数据库存放的时间类型:
in_times in_va
2012-05-05 10:00:00 10
2012-05-05 11:00:00 20
2012-05-05 12:00:00 30
JAP查询的时候能按日期分组吗?
相当于sql
select sum(in_va),to_char(in_times ,'yyyy-mm-dd') from my_table group by to_char(in_times ,'yyyy-mm-dd')
结果
2012-05-05 60
...全文
228 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

哎 关键是我们的那个框架规范只能使用JPA那套查询,ORACKE的分析函数都没得办法用....很是悲剧
[/Quote]

呵呵。
苹果的小弟 2012-04-01
  • 打赏
  • 举报
回复
哎 关键是我们的那个框架规范只能使用JPA那套查询,ORACKE的分析函数都没得办法用....很是悲剧
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

好像不得行....
再实际项目中、按天统计、按周统计、按月、按季度等等是非常多的....数据量大了等这个查完了花儿都谢了
[/Quote]

如果数量很大,你还会用hql吗?肯定改用sql了。

记住,在一个项目中,不可能只使用hql或者只使用sql。两者结合。
苹果的小弟 2012-04-01
  • 打赏
  • 举报
回复
好像不得行....
再实际项目中、按天统计、按周统计、按月、按季度等等是非常多的....数据量大了等这个查完了花儿都谢了
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

引用 2 楼 的回复:
引用 1 楼 的回复:

可以。


你不用用to_char再转,直接group by date(日期类型就可以)

不用to_char转换格式的话,分组的时候是按时间分组的吧,不是统计到那一天的吧


恩,你要统计,那是需要转成to_char.
类似于这样的:
CriteriaBuilder criteriaB……
[/Quote]

来源:

http://www.altuure.com/2010/09/23/jpa-criteria-api-by-samples-part-i/
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:
引用 1 楼 的回复:

可以。


你不用用to_char再转,直接group by date(日期类型就可以)

不用to_char转换格式的话,分组的时候是按时间分组的吧,不是统计到那一天的吧
[/Quote]

恩,你要统计,那是需要转成to_char.
类似于这样的:
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();

给你个api上的例子:



Query query = entityManager.createQuery("select min(s.pint),s.pbyte from SimpleBean s group by s.pbyte");

List listExpected = query.getResultList();

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root from = criteriaQuery.from(SimpleBean.class);

Expression minExpression = criteriaBuilder.min(from.get("pint"));
Path pbytePath = from.get("pbyte");
CriteriaQuery<Object> select = criteriaQuery.multiselect(minExpression, pbytePath);

CriteriaQuery<Object> groupBy = select.groupBy(pbytePath);

TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List listActual = typedQuery.getResultList();
苹果的小弟 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:

可以。


你不用用to_char再转,直接group by date(日期类型就可以)
[/Quote]
不用to_char转换格式的话,分组的时候是按时间分组的吧,不是统计到那一天的吧
苹果的小弟 2012-04-01
  • 打赏
  • 举报
回复
我是用
CriteriaBuilder来查的,那么写呢????
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以。
[/Quote]

你不用用to_char再转,直接group by date(日期类型就可以)
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
可以。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧