Spring 在OneToMany关系中使用条件生成器选择计数
我正在构建一个SpringWeb应用程序,我是JPA的新手,我需要在我的数据库中获取特定组中的用户数 以下是示例代码: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
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));