我正在尝试迁移我的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
答案 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