Я хочу запросить данные из двух таблиц,
поле местоположения в переводе - это внешний ключ из поля идентификатора местоположения
@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](https://i.stack.imgur.com/WUdy6.png)
ОБНОВЛЕНИЕ
У меня работают следующие.
@OneToMany(mappedBy = "location", cascade = CascadeType.ALL)
@JsonIgnore
private Set<Translation> translations;
@ManyToOne
@JoinColumn(name = "location")
private Location location;