Java 标准生成器和规范jpa

Java 标准生成器和规范jpa,java,spring-boot,jpa,spring-data-jpa,Java,Spring Boot,Jpa,Spring Data Jpa,所以,我很确定这是一个基本的错误,但我无法解释。。。 我有一个有20多个字段的表。我需要创建一个something来返回一个字段中的特定计数 select查询基本上如下所示: SELECT d.host AS Host, COUNT(d.host) AS Total FROM VM_N d JOIN VM_VM h WHERE h.datetime BETWEEN CAST(#date1# AS DATE) AND CAST(#date2# AS DATE) GROUP BY d.host O

所以,我很确定这是一个基本的错误,但我无法解释。。。 我有一个有20多个字段的表。我需要创建一个something来返回一个字段中的特定计数

select查询基本上如下所示:

SELECT d.host AS Host, COUNT(d.host) AS Total FROM VM_N d JOIN VM_VM h WHERE h.datetime BETWEEN 
CAST(#date1# AS DATE) AND CAST(#date2# AS DATE) GROUP BY d.host ORDER BY Total DESC
我建立了一个规范,过滤日期如下:

public static Specification<NSBaseQuery> withDateRange(Date dateInit, Date dateFim) {

    if (dateInit == null || dateFim == null) {
        return null;
    } else {//return a.compareTo(d) * d.compareTo(b) >= 0;
        return (Root<NSBaseQuery> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> cb.between(root.get("date"), dateInit, dateFim);
    }

}
带有日期范围的公共静态规范(Date-dateInit、Date-dateFim){
if(dateInit==null | | dateFim==null){
返回null;
}else{//返回a.compareTo(d)*d.compareTo(b)>=0;
return(Root、CriteriaQuery查询、CriteriaBuilder cb)->cb.between(Root.get(“date”)、dateInit、dateFim);
}
}
但我正在努力创建选择我对这个很陌生

这就是我所能得到的:

public static Specification<NSBaseQuery> getNSActives(Boolean active, Date dateInit, Date dateFim) {
    if (!active || active == null) {
        return null;
    } else {//root.get("host").alias("Host"), cb.count( root.get("host")).alias("Total")

        return (Root<NSBaseQuery> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {
            
            query.multiselect(root.get("host").alias("Host"), cb.count( root.get("host")).alias("Total"))
                    .where(cb.between(root.get("date"), dateInit, dateFim));
            //also here there's an error because of the return type that i can't resolve...
            
            
        };
    }

}
publicstaticspecification getNSActives(Boolean-active、Date-dateInit、Date-dateFim){
如果(!active | | active==null){
返回null;
}else{//root.get(“主机”).alias(“主机”)、cb.count(root.get(“主机”)).alias(“总计”)
返回(根目录、CriteriaQuery查询、CriteriaBuilder cb)->{
query.multiselect(root.get(“host”).alias(“host”)、cb.count(root.get(“host”)).alias(“Total”))
其中(cb.between(root.get(“日期”)、dateInit、dateFim));
//这里还有一个错误,因为返回类型我无法解析。。。
};
}
}
我该怎么做才能让它成功