通过 Projection 根据他们的 属性 获取 children 的计数

Get count of children based on their property via Projection

在我的项目中,我有一个 parent 和一个 child 实体。 child 有一个 属性 'isDeleted' 用于在总计数中包含或排除该记录。写入投影以获得 parent 并使用 @Value("#{target.getChildren().size()}") 声明方法以获取 children 计数。如何在 SpEL 语法中用 isDeleted==1 排除 children? 0 表示 'active',1 表示 'deleted'。

Parent

@Entity
public class Parent {
   long id;
   Set<Child> children;

   public Set<Child> getChildren();
}

Child

public class Child {
   int isDeleted;

   public int getIsDeleted();
}

投影

public interface ParentProjection {
    Long getId();
    @Value("#{target.getChildren().size()}")
    int getChildrenCount();
}

在基于 XML 的 SpEL 中,我们可以像下面这样过滤列表:

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

你可以尝试为你的 children class 做这样的表达 例如:@Value("#{target.getChildren().?[isDeleted eq 1].size()}")