Возвращается пустой массив в JSON

хотел написать пет-проект, всё гуд записывается, но пустой массив в JSON, что нужно дописать в коде или убрать? Спасибо. Использую Spring Boot + БД MySQL + REST API. Прикладываю сюда код и скрин из постмана.

Класс пользователя

package zhedron.store.entity;

import jakarta.persistence.*;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table (name = "users")
public class User {
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column (name = "id")
    private int id;

    @Column (name = "name")
    private String name;

    @Column (name = "lastname")
    private String lastname;

    @OneToMany
    @JoinColumn (name = "products_id")
    private List<Product> products = new ArrayList<>();
    @Column (name = "createdAt")
    private LocalDate createdAt;

    public User () {
        createdAt = LocalDate.now();
    }

    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 String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    public LocalDate getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(LocalDate createdAt) {
        this.createdAt = createdAt;
    }
}

Класс товара

package zhedron.store.entity;

import jakarta.persistence.*;

@Entity
@Table (name = "products")
public class Product {
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column (name = "id")
    private int id;

    @Column (name = "title")
    private String title;

    @Column (name = "description")
    private String description;

    @Column (name = "price")
    private int price;

    public Product () {}

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

Интерфейс репозитории есть, не думаю что стоит его публиковать.

Класс сервиса:

package zhedron.store.services;

import org.springframework.stereotype.Service;
import zhedron.store.entity.Product;
import zhedron.store.entity.User;
import zhedron.store.repository.UserRepository;

import java.util.List;

@Service
public class UserService {
    private final UserRepository repository;

    public UserService(UserRepository repository) {
        this.repository = repository;
    }

    public List<User> findAll () {
        return repository.findAll();
    }

    public void save (User user) {
        repository.save(user);
    }

    public void delete (int id) {
        repository.deleteById(id);
    }

    public void update (User user) {
        User updated = new User ();
        user.setProducts(updated.getProducts());
        repository.save(user);
    }
}

Класс контроллера:

package zhedron.store.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import zhedron.store.entity.User;
import zhedron.store.services.UserService;

import java.util.List;

@RestController
@RequestMapping ("/users")
public class UserController {
    private final UserService service;

    public UserController(UserService service) {
        this.service = service;
    }

    @PostMapping("/create")
    public ResponseEntity<?> create (@RequestBody User user) {
        service.save(user);

        return ResponseEntity.ok(HttpStatus.CREATED);
    }

    @GetMapping
    public ResponseEntity<?> findAll () {
        List<User> users = service.findAll();

        return ResponseEntity.ok(users);
    }

    @PutMapping ("/update")
    public ResponseEntity<?> update (User user) {
        service.update(user);

        return ResponseEntity.ok(HttpStatus.OK);
    }
}

Пишу в JSON массив типо такого "products": [ {"title": "Название товара"}] и так далее, не только title конечно же, но вы сами поняли. Прикладываю скрин из постмана: введите сюда описание изображения

Хочу чтобы возвращался массив с данными, а не пустой, как это сделать?


Ответы (1 шт):

Автор решения: user557597

Пофиксилось в аннотации @OneToMany (cascade = Cascade.ALL), если кому надо будет

→ Ссылка