JPA criteriabuilder group by 1

JPA criteriabuilder group by 1,jpa,criteria-api,Jpa,Criteria Api,我正在尝试将我的postgres原生查询迁移到使用criteriabuilder 我想要实现的是: 选择日期('day',t.starttime)作为日期,将(*)作为登录表t组中的无用户按1个顺序按1个顺序计算 到目前为止,我还不知道如何按1的顺序构建团队 这就是我取得的成绩: CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<RequestPerWeek> cq = cb.createQuery

我正在尝试将我的postgres原生查询迁移到使用criteriabuilder

我想要实现的是: 选择日期('day',t.starttime)作为日期,将(*)作为登录表t组中的无用户按1个顺序按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));
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(RequestPerWeek.class);
Root-from=cq.from(TLogin.class);
字符串date=“week”;
表达式dateTrunc=cb.function(“date_trunc”,Calendar.class,cb.literal(date),from.get(TLogin_.starttime).as(Calendar.class));
选择(cb.construct(RequestPerWeek.class,cb.count(from),dateTrunc));
我尝试过几种groupby备选方案,但没有一种能像我希望的那样工作:-|

致以最良好的祝愿,
hw

我们在我们的项目中使用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);
}
public interface UserRepository扩展了JpaRepository{
@查询(“从用户u中选择u,其中u.firstname=:firstname或u.lastname=:lastname”)
用户findByLastnameOrFirstname(@Param(“lastname”)字符串lastname,
@Param(“firstname”)字符串firstname);
}
下面的链接对于使用SpringDataJPA的任何人都很有用,如果您正在编写条件查询,请查看是否可以使用命名参数方法获得结果。这很简单,而且编写的代码非常少


我们在项目中使用的是spring data 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);
}
public interface UserRepository扩展了JpaRepository{
@查询(“从用户u中选择u,其中u.firstname=:firstname或u.lastname=:lastname”)
用户findByLastnameOrFirstname(@Param(“lastname”)字符串lastname,
@Param(“firstname”)字符串firstname);
}
下面的链接对于使用SpringDataJPA的任何人都很有用,如果您正在编写条件查询,请查看是否可以使用命名参数方法获得结果。这很简单,而且编写的代码非常少