Получите количество детей на основе их собственности через Projection

В моем проекте у меня есть родительский и дочерний объект. У дочернего элемента есть свойство 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();
}

Одним из вариантов может быть использование проекции на основе класса с методом возврата вычисленного значения. docs.spring.io/spring-data/jpa/docs/current/reference/html/…

Alan Hay 04.07.2019 09:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
252
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

в SpEL на основе XML мы можем фильтровать список следующим образом:

<property name = "failedStudents" value = "#{studentList.?[marks lt 40]}" />

вы можете попробовать сделать такое выражение для своего дочернего класса например: @Value("#{target.getChildren().?[isDeleted eq 1].size()}")

Другие вопросы по теме