Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 带条件生成器的SQL查询_Java_Mysql_Jpa_Hibernate Criteria - Fatal编程技术网

Java 带条件生成器的SQL查询

Java 带条件生成器的SQL查询,java,mysql,jpa,hibernate-criteria,Java,Mysql,Jpa,Hibernate Criteria,我有SQL查询,我需要将其转换为criteria builder SELECT product_id, SUM(`quantity`) AS quantity, price, margin, category_id FROM `product_sale` WHERE time = '2017-02-06 22:39:11' GROUP BY `product_id` 我起步不错,但不知道如何继续下去 CriteriaBuilder cb = em.getCriteriaB

我有SQL查询,我需要将其转换为criteria builder

SELECT product_id, SUM(`quantity`) AS quantity, price, margin, category_id 
  FROM `product_sale` 
 WHERE time = '2017-02-06 22:39:11' 
 GROUP BY `product_id`
我起步不错,但不知道如何继续下去

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<SaleProduct> cq = cb.createQuery(SaleProduct.class);

    Root<SaleProduct> saleProduct = cq.from(SaleProduct.class);
    cq.multiselect(saleProduct.get("productId"), cb.sum(saleProduct.<Integer>get("quantity")));
    Predicate filterCondition = getFilterCondition(cb, saleProduct, filters);
    filterCondition = cb.between(saleProduct.<Date>get("time"), dateTo, dateFrom);
    filterCondition = cb.and(filterCondition, cb.equal(saleProduct.get("storeId"), storeId));

    cq.where(filterCondition);
    cq.groupBy(saleProduct.get("productId"));
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(SaleProduct.class);
根saleProduct=cq.from(saleProduct.class);
cq.multiselect(saleProduct.get(“productId”)、cb.sum(saleProduct.get(“数量”));
谓词filterCondition=getFilterCondition(cb、saleProduct、筛选器);
filterCondition=cb.between(saleProduct.get(“时间”)、dateTo、dateFrom);
filterCondition=cb.and(filterCondition,cb.equal(saleProduct.get(“storeId”),storeId));
cq.where(过滤条件);
cq.groupBy(saleProduct.get(“productId”);

因此,首先将其转换为JPQL。JPQL指的是类和字段,而不是表和列,这里没有人看到您的实体,所以先发布您试图实现的JPQL以及您的实体,然后评论您得到的错误您需要解决的第一个问题是,您不能仅基于您显示的SQL对
产品id
列进行
分组。
price
margin
category\u id
的值可能需要包含或删除,因为您当时在
groupby
中没有提到,它们不是聚合值。因此,首先将其转换为JPQL。JPQL指的是类和字段,而不是表和列,这里没有人看到您的实体,所以先发布您试图实现的JPQL以及您的实体,然后评论您得到的错误您需要解决的第一个问题是,您不能仅基于您显示的SQL对
产品id
列进行
分组。
price
margin
category\u id
的值需要包括或删除,因为您当时在
GROUP BY
中没有提到,它们不是聚合值。