springboot jpa合并两个表

问题描述 投票:0回答:1

我想从两个表中查询数据,

翻译中的位置字段是来自位置ID字段的外键

@Entity
@Table(name = "Translation")
@Data
public class Translation {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @NotNull private String language;

  @NotNull private String name;

  @NotNull private String description;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "location", nullable = false, insertable = false, updatable = false)
  @Fetch(FetchMode.JOIN)
  private Location location;
}


@Entity
@Table(name = "Location")
@Data
public class Location {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @NotNull private String code;

  @NotNull private String type;

  private Double longitude;
  private Double latitude;

  @Column(name = "parent_id")
  private Integer parentId;

  @OneToMany(targetEntity = Translation.class, mappedBy="id", fetch = FetchType.EAGER)
  private Set<Translation> translations;
}

———————————————————————————————————————— []

但是当我使用查询时

  @Query(
      "SELECT new com.afkl.travel.exercise.model.RetrieveLocationResponse("
          + "loc.code, tran.name, loc.type, loc.latitude, loc.longitude, tran.description, loc.parentId)"
          + "FROM Location loc LEFT JOIN loc.translation tran")
  List<RetrieveLocationResponse> fetchLeftJoin();

与翻译有关的所有字段为空,不知道发生了什么

enter image description here


UPDATE

以下内容对我有用。

  @OneToMany(mappedBy = "location", cascade = CascadeType.ALL)
  @JsonIgnore
  private Set<Translation> translations;

  @ManyToOne
  @JoinColumn(name = "location")
  private Location location;
spring-boot spring-data-jpa jpql
1个回答
1
投票

尝试

  @OneToMany(mappedBy = "location", cascade = CascadeType.ALL)
  @JsonIgnore
  private Set<Translation> translations;

  @ManyToOne
  @JoinColumn(name = "location")
  private Location location;
© www.soinside.com 2019 - 2024. All rights reserved.