Java 如何使用Spring数据Jpa获取具有条件的父级及其所有子级?

Java 如何使用Spring数据Jpa获取具有条件的父级及其所有子级?,java,spring-data-jpa,Java,Spring Data Jpa,我有一个Parent和Child实体,如下所示- class Parent { Long id; List<Child> children; } class Child { Long id; String status; // ACTIVE or INACTIVE Parent parent; } 问题是- 仅获取活动子项的最简单方法是什么 是否可以在子实体的上设置活动查询条件 status属性默认情况下是否仅获取活动子实体 类似于上面的查询方法会起作用吗 见

我有一个
Parent
Child
实体,如下所示-

class Parent {
  Long id;
  List<Child> children;
}

class Child {
  Long id;
  String status; // ACTIVE or INACTIVE
  Parent parent;
}
问题是-

  • 仅获取
    活动
    子项的最简单方法是什么
  • 是否可以在
    子实体的上设置活动查询条件
    
    status
    属性默认情况下是否仅获取活动子实体
  • 类似于上面的查询方法会起作用吗
  • 见下文
  • 单独使用Spring注释是不可能的,但您可以使用Hibernate的:
  • 不幸的是,该方法的含义与预期的略有不同。这意味着:得到id为
    id
    的父母,并且有一个状态为
    status
    的孩子。生成的查询如下所示:

    SELECT parent0_.id AS id1_1_
    FROM parent parent0_
    LEFT OUTER JOIN child children1_ ON parent0_.id=children1_.parent_id
    WHERE parent0_.id=? AND children1_.status=?
    
    @Entity
    @Getter
    @Setter
    public class Parent {
    
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private Long id;
    
        @Where(clause = "status='ACTIVE'")
        @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
        private List<Child> children;
    }
    
    public interface ParentRepository extends CrudRepository<Parent, Long> {
    
        Parent findByIdAndChildrenStatus(Long id, String status);
    
    }
    
    SELECT parent0_.id AS id1_1_
    FROM parent parent0_
    LEFT OUTER JOIN child children1_ ON parent0_.id=children1_.parent_id
    WHERE parent0_.id=? AND children1_.status=?