Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
Java 使用CriteriaBuilder的JPA计数(*)。如何使用CriteriaBuilder检索计数(*)列_Java_Jpa_Orm_Criteria_Criteriaquery - Fatal编程技术网

Java 使用CriteriaBuilder的JPA计数(*)。如何使用CriteriaBuilder检索计数(*)列

Java 使用CriteriaBuilder的JPA计数(*)。如何使用CriteriaBuilder检索计数(*)列,java,jpa,orm,criteria,criteriaquery,Java,Jpa,Orm,Criteria,Criteriaquery,我对CriteriaBuilder API有一个问题: 我想对一列的结果进行计数,并返回该计数的结果和该列的不同值列表 |桌上水果|计数(桌上水果)| |------------------------|---------------------------| |苹果(5)| |橙色|(20)| |香蕉|(400)| 因此,我想进行一个查询,该查询将执行以下SQL语句: select distinct COLUMN_NAME_1, count(COLUMN_NAME_1) from TABLE

我对CriteriaBuilder API有一个问题:

我想对一列的结果进行计数,并返回该计数的结果和该列的不同值列表

|桌上水果|计数(桌上水果)|
|------------------------|---------------------------|
|苹果(5)|
|橙色|(20)|
|香蕉|(400)|
因此,我想进行一个查询,该查询将执行以下SQL语句:

select distinct COLUMN_NAME_1, count(COLUMN_NAME_1)
from TABLE_NAME
where COLUMN_NAME_2= 'value'
group by COLUMN_NAME_1;
CriteriaBuilder cb=getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(Fruit.class);
根=cq.from(果类);
列表谓词=新的ArrayList();
add(cb.equal(root.get(“COLUMN_NAME_2”),value));
cq.where(predicates.toArray(新谓词[predicates.size()]);
//如何从此处的表格中选择计数(*)?
cq.select(root.get(“COLUMN\u NAME\u 1”)).distinct(true);
groupBy(root.get(“COLUMN_NAME_1”);
因此,我的问题是:如何在Java中从查询中检索这两个值

1)将泛型更改为:
CriteriaQuery cq=cb.createQuery(Object[])

2)更改选择:
cq.select(cb.count(root)、root.get(“COLUMN\u NAME\u 1”)

3)迭代结果列表:

List<Object[]> results = em.createQuery(cq).getResultList();
for (Object[] result : results) {
   // actions
}
List results=em.createQuery(cq.getResultList();
对于(对象[]结果:结果){
//行动
}
试试这个

cq.multiselect(root.get("COLUMN_NAME_1"), cb.count(root.get("COLUMN_NAME_1"));
// add your predicates here
cq.groupBy(root.get("COLUMN_NAME_1"));