JPA Criteria API计算特定日/月/年的实体数

时间:2014-03-07 14:35:44

标签: java mysql sql jpa criteria-api

我有以下查询,我想将其转换为Criteria API。因为我很新,所以我遇到了一些困难。 SQL语句如下:

SELECT
  dayofweek(FROM_UNIXTIME(p.startTime / 1000)) as d,
  count(*)
FROM persons p
GROUP BY dayofweek(FROM_UNIXTIME(p.startTime / 1000))  
having d  = 1

startTime是Date的长(毫秒)表示。 此外,在执行查询时,我将询问日期/月等数字值。所以对于星期一,我们假设day参数为'1'

如何使用Criteria API形成此查询?

现在我有以下内容:

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Long> cq = cb.createQuery(Long.class);
    Root<Person> root = cq.from(Person.class);

    cq.select(cb.count(root));
    Expression<Integer> expStartTime = root.get("startTime");
    Expression<Integer> expConvertedTime =  cb.function("day", Integer.class,
            expStartTime);

    cq.groupBy(root.get("startTime"));

    cq.having(cb.equal(expConvertedTime, 1));

0 个答案:

没有答案