通过Projection获得基于其财产的儿童人数

时间:2019-07-04 05:16:58

标签: java spring-boot spring-data-jpa projection

在我的项目中,我有一个父实体和一个子实体。该子项具有“ isDeleted”属性,该属性用于从总数中包括或排除该记录。编写投影以获取父对象,并使用@Value("#{target.getChildren().size()}")声明一个方法以获取子计数。如何在SpEL语法中排除带有isDeleted==1的孩子? 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();
}

1 个答案:

答案 0 :(得分:0)

在基于XML的SpEL中,我们可以过滤列表,如下所示:

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

您可以尝试为孩子上课做这样的表达 例如:@Value(“#{target.getChildren()。?[isDeleted eq 1] .size()}”)