【问题标题】:JPA one to many, fetch children with specific column valueJPA 一对多,获取具有特定列值的子项
【发布时间】:2019-11-25 04:52:21
【问题描述】:

在我的 spring-data-jpa 项目中,我有两个具有一对多关系的实体。

父实体-

@Entity
@Table(name = "code_group")
public class CodeGroup implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @NaturalId
    @Column(nullable = false)
    private String entityId;

    @OneToMany
    @JoinColumn(name = "codeGroupId", referencedColumnName = "entityId")
    private List<SystemCode> systemCodes;

    // .. getters setters
}

子实体 -

@Entity
@Table(name = "system_code")
public class SystemCode implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @Column(nullable = false)
    private String codeGroupId;

    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private ActiveOrInactive status;

    // getters and setters
}

status列是enum类型,只能有ActiveInactive值。

我现有的代码运行良好。它正在获取具有相关系统代码的代码组。我想用status='Active' 过滤系统代码。如何做到这一点?

【问题讨论】:

    标签: spring-boot jpa filter spring-data-jpa one-to-many


    【解决方案1】:

    试试这样:

    @OneToMany
    @JoinColumn(name = "codeGroupId", referencedColumnName = "entityId")
    @Where(clause = "status= 'Active'")
    private List<SystemCode> systemCodes;
    

    【讨论】:

      【解决方案2】:

      你可以在你的 repo 中创建这样的方法:

      List<CodeGroup> getAllBySystemCodes_Status(ActiveOrInactive status);
      
      default List<CodeGroup> getAllActive() {
           return getAllBySystemCodes_Status(ActiveOrInactive.Active);
      }
      
      default List<CodeGroup> getAllInactive() {
           return getAllBySystemCodes_Status(ActiveOrInactive.Inactive);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-02
        • 2020-06-09
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        相关资源
        最近更新 更多