Как создать вложенный JSON для списка многоуровневого меню, используя Spring boot и MYSQL? - PullRequest
0 голосов
/ 23 мая 2019

Я пытался создать многоуровневый вложенный JSON с использованием MySQL и Spring boot.

Мне понадобится этот JSON, чтобы позже я смог использовать jQuery для создания меню HTML.

Но в настоящее время я пытаюсь создать свой многоуровневый вложенный JSON.

По сути, у меня есть база данных MYSQL, которая выглядит следующим образом:

id    categoryItem    parrent

1     car               0
2     red car           1
3     blue car          1
4     bike              0
5     yellow bike       4

Столбец post_parent - это столбец, который связывает их вместе.

Я пытался использовать следующий загрузочный код Spring, но вывод JSON неверен.

Мой класс сущностей такой:

@Table(name = "category_item")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class CategoryItem implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @NotNull
    @Column(name = "name", nullable = false)
    private String name;

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

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

    @ManyToOne
    @JsonIgnoreProperties("categoryItems")
    private CategoryItem parrent;
}

Мне понадобится многоуровневый вложенный JSON, подобный этой структуре:

{
  "id": 1,
  "name": "car",
  "categoryItem": [
    {
      "id": 2,
      "name": "red car"
    },
    {
      "id": 3,
      "name": "blue car"
    }
  ]
}

Как я могу справиться с этим !? пожалуйста помогите!

1 Ответ

0 голосов
/ 23 мая 2019

Вам необходимо установить двустороннее отношение:

@Table(name = "category_item")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class CategoryItem implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @NotNull
    @Column(name = "name", nullable = false)
    private String name;

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

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

    @OneToMany(mappedBy = "parent")
    private Set<CategoryItem> categoryItems;

    @ManyToOne
    @JsonIgnoreProperties("categoryItems")
    private CategoryItem parent;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...