我尝试动态地从数据库创建一个菜单。
假设我有桌子:
"menu":
[
{"name": "Menu1", "url": "www.google.com", "childMenu": null},
{"name": "Menu2", "url": "1", "childMenu":
[
{"name": "childMenu1","url": "www.google.com", "childMenu": null},
{"name": "childMenu2","url": "www.google.com", "childMenu": null},
{"name": "childMenu3","url": "www.google.com", "childMenu": null}
]
},
{"name": "Menu3", "url": "www.google.com", "childMenu":
[
{"name": "childMenu1","url": "www.google.com", "childMenu": null},
{"name": "childMenu2","url": "www.google.com", "childMenu": null}
]
}
]
和数据
现在我想在类
中使用hibernate映射信息sudo apt-get -y install redis-server
所以我可以从该类创建一个类似于
的JSON{{1}}
关于如何用hibernate做的任何想法,所以我不必使用嵌套的?
谢谢。
答案 0 :(得分:0)
大致是:
@Entity
@Table(name = "MENU")
public class Menu {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "URL")
private String url;
@OneToMany
@JoinColumn(name = "FATHER", referencedColumnName = "ID")
private List<Menu> childMenu;
}
您不应该在此处要求任何特殊@Json*
注释,因为您没有在此处映射FATHER
关系的两端。如果是,您还需要在@JsonIgnore
字段中添加father
。
答案 1 :(得分:0)
更改表格,使其有一个额外的列:
my_list.split(',')
MENU (
MASTER_ID,
ID,
NAME,
URL,
FATHER
);
包含主菜单项ID:示例:
MASTER_ID
是主菜单项。
子项:
MASTER_ID | ID | NAME | URL | FATHER
NULL | 1 | some_menu | some_url | NULL
小孩:
MASTER_ID | ID | NAME | URL | FATHER
1 | 2 | some_menu2 | some_url2 | 1
正如您所注意到的:MASTER_ID | ID | NAME | URL | FATHER
1 | 3 | some_menu2 | some_url2 | 2
可用于仅在1个查询中检索完整的菜单树,而无需将表连接回自身。