【发布时间】:2021-04-29 09:48:06
【问题描述】:
我对规范、构建器、查询不是很有经验,我必须做一个相当复杂的查询:
select * from table where
code in ('code1', 'code2' //codes) and
(
(
date between "2020-03-23 //from" and "2020-03-30 //to"
and
status in ('Status1' , 'Status2' //status)
)
or
(
date between "2021-03-23" and "2021-03-30"
and
status in ('Status3' , 'Status4')
)
)
我有一个像这样的 DTO:
public class SearchCriteria {
@Embedded
private Filters filters;
@Embeddable
@Getter
@Setter
public static class Filters {
private List<String> codes;
private List<TimePeriod> timePeriods;
}
@Embeddable
@Getter
@Setter
public static class TimePeriod {
private List<String> status;
private StartDate startDate;
}
@Embeddable
@Getter
@Setter
public static class StartDate {
private LocalDate from;
private LocalDate to;
}
这对我来说很难。我正在尝试一切。我宁愿给你看一个具体的案例,以免误会。有人可以帮我吗?非常感谢!
我不需要使用规范,我只需要能够重现那个查询示例,规范似乎是最好的选择。
谢谢大家。
【问题讨论】:
标签: java jpa spring-data-jpa specifications criteriaquery