Необходимо сделать многоуровневое меню, примерно такой результат должен быть:
- 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