JPA criteriabuilder group by 1

时间:2013-11-12 21:27:46

标签: jpa criteria-api

我正在尝试迁移我的postgres本地查询,而不是使用criteriabuilder。

我想要达到的目标是: select date_trunc('day',t.starttime)AS day,count(*)AS no_of_users from login_table t group by 1 order by 1

到目前为止,我还没有看到如何按1顺序构建组。

这是我走了多远:

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<RequestPerWeek> cq = cb.createQuery(RequestPerWeek.class);
    Root<TLogin> from = cq.from(TLogin.class);
    String date = "week";
    Expression<Calendar> dateTrunc=cb.function("date_trunc",Calendar.class,cb.literal(date), from.get(TLogin_.starttime).as(Calendar.class));
    cq.select(cb.construct(RequestPerWeek.class,cb.count(from),dateTrunc));

我尝试了几种groupby替代品,但没有人像我想要的那样: - |

最好的问候, HW

1 个答案:

答案 0 :(得分:-1)

我们在项目中使用spring数据jpa,如果你使用它,就不需要为简单查询编写条件查询,你可以直接在方法上编写查询并获得结果。这种方法是'使用命名参数'

例如,

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")
  User findByLastnameOrFirstname(@Param("lastname") String lastname,
                                 @Param("firstname") String firstname);
}

以下链接对于使用spring数据jpa的任何人都很有用,如果您正在编写标准查询,请查看是否可以使用命名参数方法获得结果。这很简单,你编写的代码非常少。

http://docs.spring.io/spring-data/data-jpa/docs/1.4.x/reference/htmlsingle/#jpa.named-parameters