Возвращается пустой массив в 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), если кому надо будет