Как OneToMany однонаправленных отношений (Spring boot + JPA) - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь получить результаты однонаправленного отношения OneToMany в Spring Boot.

Это моя сущность "Бренд"

@Entity
@Table
class Brand {

@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id 

@Column(nullable = false, length = 255)
private String name 

@OneToMany(orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "id_model", referencedColumnName = "id")
private List<Model> models  // Listado de modelos

@CreationTimestamp
@Column(name = "fecha_alta")
private Timestamp fechaAlta // Fecha de alta

*getters and setters*

А это моя сущность "Модель"

@Entity
@Table
class Model {

@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id // Identificaodr único del modelo

@Column(nullable = false, name="id_model")
private Long idModel // Identificador de la comisión

*getters and setters*

Я хочу получить список «брендов» с их соответствующими моделями, используя репозиторий, сервис и контроллер от Spring Boot, и я не знаю, как это сделать. Есть идеи?

1 Ответ

1 голос
/ 26 февраля 2020

BrandRepository.class

interface BrandRepository implements CrudRepository<Brand,Long> {
  @Query("SELECT b FROM Brand b JOIN FETCH b.models")
  List<Brand> getAll();
}

BrandService.class

@Service
class BrandService {
  private final BrandRepository brandRepository;

  public BrandService(BrandRepository brandRepository) {
    this.brandRepository = brandRepository;
  }

  List<Brand> getAll() {
    return brandRepository.getAll();
  }
}

BrandController.class

@RestController
@RequestMapping("/brands")
class BrandController {
  private final BrandService brandService;

  public BrandController(BrandService brandService) {
    this.brandService = brandService;
  }

  @GetMapping
  public List<Brand> getAll() {
    return brandService.getAll();
  }
}

В качестве предложения

Бренд .class:

-@Table удалить аннотацию. (Нет необходимости, если вы не назовете таблицу. По умолчанию создает таблицу с именем class.)

-models field, удалить стратегию выборки. (@OneToMany выборка по умолчанию, LAZY)

Эти статьи помогут вам понять ответ:

Работа с репозиториями данных Spring

Доступ Данные с JPA

Создание веб-службы RESTful

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