Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在OneToMany关系中使用条件生成器选择计数_Spring_Hibernate_Jpa_Orm_Entitymanager - Fatal编程技术网

Spring 在OneToMany关系中使用条件生成器选择计数

Spring 在OneToMany关系中使用条件生成器选择计数,spring,hibernate,jpa,orm,entitymanager,Spring,Hibernate,Jpa,Orm,Entitymanager,我正在构建一个SpringWeb应用程序,我是JPA的新手,我需要在我的数据库中获取特定组中的用户数 以下是示例代码: public long countAllUsersByGroup(int groupId) { CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery<Long> cq = qb.createQuery(Long.class); cq.select(qb.count(cq.fro

我正在构建一个SpringWeb应用程序,我是JPA的新手,我需要在我的数据库中获取特定组中的用户数

以下是示例代码:

public long countAllUsersByGroup(int groupId) {
    CriteriaBuilder qb = em.getCriteriaBuilder();
    CriteriaQuery<Long> cq = qb.createQuery(Long.class);
    cq.select(qb.count(cq.from(User.class)));
    //cq.where(qb.equal(cq.from(User.class).get("userGroup").get("id"),groupId));
    return em.createQuery(cq).getSingleResult();
}
我的组模型有一个int属性,用
@Id
注释,名为
Id
。在这种情况下,如何按组id获取用户数


附言:我在上面的代码中尝试并评论了我的尝试,不幸的是失败了

您可以尝试下面的代码

  CriteriaBuilder cb = em.getCriteriaBuilder();

  CriteriaQuery<Long> q = cb.createQuery(Long.class);

  ParameterExpression<Integer> p = cb.parameter(Integer.class);
  q.select(q.count(q.from(User.class))).where(cb.gt(c.get("userGroup"), someId));
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery q=cb.createQuery(Long.class);
ParameterExpression p=cb.parameter(Integer.class);
q、 选择(q.count(q.from(User.class))).where(cb.gt(c.get(“用户组”),someId));

类型CriteriaQuery的方法计数(根)未定义。。。我做错了什么?参数表达式没有使用?那么目的是什么呢?你从哪里来的变量“c”!C这是cb,很抱歉给您带来混乱
  CriteriaBuilder cb = em.getCriteriaBuilder();

  CriteriaQuery<Long> q = cb.createQuery(Long.class);

  ParameterExpression<Integer> p = cb.parameter(Integer.class);
  q.select(q.count(q.from(User.class))).where(cb.gt(c.get("userGroup"), someId));