Поиск объектов по свойству во вложенном списке объектов

#spring #hibernate #jpa #nested #spring-data-jpa

#spring #спящий режим #jpa #вложенный #весна-данные-jpa

Вопрос:

Мне нужно выбрать все ScheduleOrderEntities, свойство элемента вложенного списка вложенного списка является датой между ними…

В приведенных ниже решениях ошибок нет, но результат всегда пустой, в то время как при тестировании с помощью:

 scheduleOrderRepository.findByExecutionTime(Instant.now(), Instant.now().plus(3, ChronoUnit.DAYS)) 
 

В то время как в этом месяце каждый день выполняется 2

каждый ScheduleOrderEntity имеет свойство:

 @OneToMany(cascade = CascadeType.ALL, mappedBy = "parentOrder", orphanRemoval = true)
private List<SchedulePlanEntity> schedulePlanEntities;
 

И каждый SchedulePlanEntity имеет:

 @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<ScheduleEntity> scheduleEntityList;
 

ScheduleEntity имеет свойство ExecutionTime, по которому мне нужно сортировать.

Возможно ли это сделать с помощью jpa? Нет проблем сделать это с помощью стандартного запроса, но я хочу знать, возможно ли это с помощью этого ORM. Я пробовал оба:

 @Query("SELECT soe FROM ScheduleOrderEntity soe LEFT JOIN soe.schedulePlanEntities 
spe LEFT JOIN spe.scheduleEntityList sel WHERE sel.executionTime BETWEEN 
:start AND :stop")
List<ScheduleOrderEntity> findByExecutionTime(@Param("start") Instant start, @Param("stop") Instant stop);

List<ScheduleOrderEntity> findBySchedulePlanEntities_ScheduleEntityList_ExecutionTimeBetween(@Param("start") Instant start, @Param("stop") Instant stop);
 

Комментарии:

1. В чем ошибка?

2. В решениях нет ошибок, но результат всегда пустой, в то время как при тестировании он должен иметь несколько значений

3. разве ты не скучаешь select по этому @Query поводу ?

4. нет, это не меняет его, я пытаюсь с помощью scheduleOrderRepository.findByExecutionTime(Instant.now(), Instant.now().plus(3, ChronoUnit.DAYS)) В то время как в этом месяце каждый день выполняется 2