Я не могу найти способ загрузить N + 1 объектов. Я отправляю их идентификаторы, но ожидается, что весь объект будет загружен из-за нетерпеливого извлечения, но это не работает. Я попробовал даже аннотацию @Fetch. Не уверен, что не хватает
package com.example.manytonetest;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.example.manytonetest;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.LazyToOne;
import org.hibernate.annotations.LazyToOneOption;
@Entity
@Table
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "dep_id")
private Department department;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
}
@PostMapping
public Employee addEmployee(@RequestBody Employee e) {
e = employeeRepository.save(e);
return e;
}
Ввод:
{
"name": "ABC",
"department": {
"id": 1,
"name": null
}
}
В БД существует отдел с идентификатором 1 с именем IT.
Вывод из Rest API:
{
"id": 1,
"name": "ABC",
"department": {
"id": 1,
"name": null
}
}
Почему объект отдела не загружается, несмотря на то, что он хочет получить? Что я должен сделать, чтобы он загрузился?