【问题标题】:JPA - Join two entities with a conditionJPA - 加入两个有条件的实体
【发布时间】:2020-11-30 05:48:55
【问题描述】:

我有 2 个实体 A 和 B,我想在 2 个条件下加入:

SELECT * FROM A JOIN B ON A.A_ID = B.A_ID AND SYSDATE BETWEEN B.START_DATE AND B.END_DATE


Class A {
    
    @Id
    @Column(name = "A_ID")
    String aId;
    
    @Column(name = "A_NAME")
    String aName;
    
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "aId", nullable = false, insertable = false, updatable = false)  // Add SYSDATE condition here
    Set<B> B bObjects;
    
}

Class B {
    
    @Column(name = "A_ID")
    String aId;
    
    @Column(name = "B_ID")
    String bId;
    
    @Column(name = "B_NAME")
    String bName;
    
    @Column(name = "START_DATE")
    LocalDate startDate;
    
    @Column(name = "END_DATE")
    LocalDate endDate;
}

不确定如何在@JoinColumn 注释中添加 SYSDATE BETWEEN B.START_DATE AND B.END_DATE 条件?

【问题讨论】:

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


    【解决方案1】:

    据我所知,您无法通过简单的注释来做到这一点。

    不过,如果您使用 JPA 2.1,则可以在 JPA 查询中使用 ON 子句。你有一个例子:How to make a CriteriaBuilder join with a custom "on" condition?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2018-12-27
      相关资源
      最近更新 更多