簡體   English   中英

在JPA中過濾子實體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM