Chvalov
@Chvalov

Как лучше сделать многоуровневое меню в JPA SpringBoot?

Необходимо сделать многоуровневое меню, примерно такой результат должен быть:
- Menu Item 1
 + Submenu Item 1
 + Submenu Item 2
 - Submenu Item 3
    + Sub_Submenu Item 1
    + Sub_Submenu Item 2
- Menu Item 2
 + Submenu Item 1
 + Submenu Item 2


Нашел несколько вариантов реализации:
Вариант 1
@Entity
@Table(name = "category" )
public class Category {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    private Integer id;

    private String name;

    @ManyToOne @JoinColumn(name="parent_id") @JsonIgnore
   // @ColumnDefault("0")
    private Category parentId;
    @OneToMany(mappedBy="parentId")
    private List<Category> subCategories=new ArrayList<>();
}

Вариант 2
@Entity
@Table(name = "app_category")
public class Category {

    @Id
    @GeneratedValue
    private Long id;

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

    @ManyToOne
    @JoinColumn(name = "parentid")
    private Category parent;

    @OneToMany(mappedBy = "parent")
    private Set<Category> childCategories;

    // https://github.com/Damiox/ecommerce-rest-spring-jpa

Вариант 3
@Entity
@Table(name = "MENU")
public class Menu {
    @Id
    @Column(name = "ID")
    private int id;

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

    @OneToMany
    @JoinColumn(name = "FATHER", referencedColumnName = "ID")
    private List<Menu> childMenu;
}


Еще вариант, более гибкий из-всех https://gist.github.com/michail-nikolaev/3840973
Какой взять за основу, может будут еще какие-то советы ?
Spring Boot 2
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы