В моем проекте у меня есть родительский и дочерний объект. У дочернего элемента есть свойство isDeleted, которое используется для включения или исключения этой записи из общего количества. Проекция написана для получения родителя, а метод объявлен с помощью @Value("#{target.getChildren().size()}") для подсчета дочерних элементов. Как исключить детей с isDeleted==1 в синтаксисе SpEL?
0 означает «активно», а 1 означает «удалено».
Родитель
@Entity
public class Parent {
long id;
Set<Child> children;
public Set<Child> getChildren();
}
Ребенок
public class Child {
int isDeleted;
public int getIsDeleted();
}
Проекция
public interface ParentProjection {
Long getId();
@Value("#{target.getChildren().size()}")
int getChildrenCount();
}




в SpEL на основе XML мы можем фильтровать список следующим образом:
<property name = "failedStudents" value = "#{studentList.?[marks lt 40]}" />
вы можете попробовать сделать такое выражение для своего дочернего класса например: @Value("#{target.getChildren().?[isDeleted eq 1].size()}")
Одним из вариантов может быть использование проекции на основе класса с методом возврата вычисленного значения. docs.spring.io/spring-data/jpa/docs/current/reference/html/…