[英]JPA with Specification - How to filter an entity by a child collection content?
[英]Filter child entity in jpa
無論如何,有沒有在jpa中編寫查詢來過濾子實體?
我有這個實體:
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne(targetEntity = Flow.class)
private Flow flow;
}
流實體:
@Entity
public class Flow {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(targetEntity = Step.class)
private List<Step> steps;
}
現在,我想獲取項目及其流程,但是流程中的步驟應該在start和endtime屬性上進行過濾。
我現在正在做的是找到項目,然后遍歷所有步驟並過濾步驟。
像這樣:
List<Step> steps = project.getFlow().getSteps();
List<Step> filteredSteps = new ArrayList<>();
for (int i = 0; i < steps.size(); i++) {
Step step = steps.get(i);
if (step.getStartTime() == null || step.getEndTime() == null) {
break;
}
if (step.getStartTime().isAfter(start) && step.getEndTime().isBefore(end)) {
filteredSteps.add(step);
}
}
步驟實體:
@Entity
public class Step {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private LocalDateTime startTime;
private LocalDateTime endTime;
}
我看不到如何在項目存儲庫中添加查詢,該項目存儲庫是用於篩選子實體中的步驟的原始存儲庫。
這樣的功能在您的存儲庫中就足夠了。
findByFlow_Steps_StartTimeAfterAndFlow_Steps_EndTimeBefore(Date startTime, Date endTime);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.