Многие объекты не загружаются после репозитория.save - не работает загрузка - PullRequest
0 голосов
/ 08 апреля 2020

Я не могу найти способ загрузить 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
    }
}

Почему объект отдела не загружается, несмотря на то, что он хочет получить? Что я должен сделать, чтобы он загрузился?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...