如何为等效的SQL查询创建jpa 2条件查询

时间:2019-08-18 13:02:19

标签: jpa spring-data-jpa criteria

谁能帮助我为以下sql查询创建条件查询, 我不能在子查询的where子句或谓词中使用日期子查询

从订阅中选择* 其中的ID(从subscription_package中选择subscription_id 其中(从subscription_package中选择MAX(output_date) 其中package_status ='SENT')在'date1'和'date2')之间;

由于我不熟悉jpa标准,因此我尝试创建类似

        Subquery<Date> dateQuery = query.subquery(Date.class);
        Root<SubscriptionPackage> dateRoot = dateQuery
            .from(SubscriptionPackage.class);

        Subquery<SubscriptionPackage> mappingQuery = query
            .subquery(SubscriptionPackage.class);
        Root<SubscriptionPackage> mappingRoot = mappingQuery
            .from(SubscriptionPackage.class);

         dateQuery.select(criteriaBuilder.greatest(dateRoot.get("OutputDate")));
         dateQuery.where(criteriaBuilder.equal(dateRoot.get("PackageStatus"),(SENT)));

        mappingQuery.where(criteriaBuilder.between(dateQuery, outFrom , outTo));

         criteriaBuilder.exists(mappingQuery);

但是jpa不允许mappingQuery.where(criteriaBuilder.between(dateQuery,outFrom,outTo)); 所以请帮忙解决这个问题。

0 个答案:

没有答案