gpt4 book ai didi

java - 如何为以下查询创建 jpa 规范或条件查询的谓词

转载 作者:行者123 更新时间:2023-12-02 01:28:17 26 4
gpt4 key购买 nike

我正在尝试为两个日期 date1 和 date2 之间的过滤数据创建 JPA 规范,我尝试通过子查询创建,但目前还没有成功,如果可能,请提供帮助。我正在尝试为以下 SQL 查询创建规范,

select
* from
subscription sub join (
select subscription_id,
max(output_date) as max_output_date
from
subscription_package
where
package_status = 'COMPLETE'
group by
subscription_id) sp on
sub.id = sp.subscription_id where
max_output_date between 'date1' and 'date2'

下面是在 JPA 中创建的查询:

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

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

datequery.select(criteriaBuilder
.greatest(subqueryRoot.<Date>get("outputDate")));
datequery.where(criteriaBuilder.equal(subqueryRoot.get("PackageStatus"),
'COMPLETE'));
datequery.groupBy(subqueryRoot.get("subscription"));

无法使用日期查询的结果进行比较,例如

query.where(criteriaBuilder.between(datequery., outFrom, outTo));

最佳答案

我不知道你为什么使用子查询,你可以使用简单的 Spring data jpa 和连接来获得你想要的结果。 Please check these examples

日期比较:

criteriaBuilder.between(root.get("createdDate"), fromDate, toDate));

关于java - 如何为以下查询创建 jpa 规范或条件查询的谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com