Я пытаюсь настроить Spring MVC Rest API, используя Angular во внешнем интерфейсе.Я строго новичок в обеих технологиях, и это настоящий вызов.
Я иду прямо к делу: у меня есть сущность, которая ссылается на себя.Например, категория может иметь или не иметь родительскую категорию ... Для этого я сгенерировал сущность из существующей таблицы ...
Я пытался использовать fetch = fetchtype.eager, чтобы получить данные, и это не такобеспечить ожидаемый результат.
Вот моя сущность:
package com.company.app.model;
import java.io.Serializable;
import javax.persistence.*;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.Date;
import java.util.List;
@Entity
@Table(name="categories")
@NamedQuery(name="Category.findAll", query="SELECT c FROM Category c")
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
....
//bi-directional many-to-one association to Category
@ManyToOne
@JsonManagedReference
private Category category;
//bi-directional many-to-one association to Category
@OneToMany(mappedBy="category", fetch = FetchType.EAGER)
@JsonBackReference
private List<Category> categories;
//bi-directional many-to-one association to CategoryProduct
@OneToMany(mappedBy="category")
@JsonBackReference
private List<CategoryProduct> categoryProducts;
public Category() {
}
// Getters, setters and other methods generated with JPA
}
Моя проблема в том, что я хотел бы создать Json, категории «верхнего уровня» которого не имеют родителей ивсе их детские категории.Технически это выглядело бы так:
[
{
// Top level category
"id":1,
"name":"....",
"desc": "....."
"children" : [
{
"id":12,
"name":"....",
"desc": "....."
},
{
"id":14,
"name":"....",
"desc": "....."
}
...
]
"admin":{
"id":1,
"createdAt":1541869810000,
"deletedAt":null,
"email":"david.vera@9online.fr",
"login":"admin",
"name":"Vera",
"password":"admin",
"surname":"David",
"updatedAt":1542150000000
},
}
]
В моем контроллере у меня есть метод для вывода списка категорий, и он работает как положено.
@GetMapping(path="/categories", produces= {"application/json"})
public List<Category> getAllCategories(Model model) {
return categoryRepository.findAll();
}
Спасибо за помощь