JSON, содержащий категории и подкатегории с API отдыха Spring MVC - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь настроить 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();
}

Спасибо за помощь

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