如何在连接列期间在 JPA 中使用条件语句或由

时间:2021-07-15 12:02:19

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

这是我想要实现的

LEFT OUTER JOIN i18n_resort i18n2_ ON
resort1_.resort_id = i18n2_.resort_id AND i18n2_.LANGUAGE_ID = 2

是否可以将一列和另一列的值作为 JPA 中的条件语句。

下面是Resort的实体类。

@Entity
@Table(name = "resort")
public class Resort implements Serializable {
  @Id
  @Column(name = "resort_id")
  private Long resortId;

  @BatchSize(size = 50)
  @OneToMany(mappedBy = "resortId", fetch = FetchType.LAZY)
  @I18nCollection
  @JsonIgnore
  private List<I18nResort> i18n;

  public Long getResortId() {
    return resortId;
  }

  public void setResortId(Long resortId) {
    this.resortId = resortId;
  }

  public List<I18nResort> getI18n() {
    return i18n;
  }

  public void setI18n(List<I18nResort> i18n) {
    this.i18n = i18n;
  }

}

加入的另一个类:

@Entity
@Table(name = "i18n_resort")
public class I18nResort extends I18nEntity {

  @Id
  @Column(columnDefinition = "i18n_resort_id", name = "i18n_resort_id")
  private Long i18nResortId;

  @Column(name = "resort_id")
  private Long resortId;

  @Column(name = "name")
  private String name;

  private Long languageId;

  public Long getI18nResortId() {
    return i18nResortId;
  }

  public void setI18nResortId(Long i18nResortId) {
    this.i18nResortId = i18nResortId;
  }

  public Long getResortId() {
    return resortId;
  }

  public void setResortId(Long resortId) {
    this.resortId = resortId;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

}

当时我参加 i18n 度假村课程时,我也想在 language_id 上放置条件语句以避免重复。

2 个答案:

答案 0 :(得分:0)

您可以尝试如下,无需编写查询,使用下面的 JPA 存储库方法。

并且您还在子表上添加@ManyToOne。

 firebase_messaging: ^10.0.3
 firebase_analytics: ^8.1.2
 firebase_remote_config: ^0.10.0+2
 firebase_core: ^1.3.0

答案 1 :(得分:0)

在您需要在存储库类中定义的这种情况下,最好使用 JPQL/本机查询。这是编写这些查询的非常好的资源link

相关问题