我正在尝试将多层菜单存储在数据库中。我有一个课程HorizontalMenu
,其中包含List<MenuItem>
项。我的MenuItem
类包含文本的String
,网址为String
,子菜单包含HorizontalMenu
,如果有的话。
因此,我的主菜单可以包含任意数量的MenuItem
个,每个都可以有0个或HorizontalMenu
个。
所以我想知道如何在代码中设置它,以便在数据库中正确设置。
我正在使用Ebeans和Play Framework 2.0,所以这些术语的答案会很棒,但如果有人能用数据库术语指出我的方向也很好。
这是我到目前为止所得到的:
@Entity
@Embeddable
public class HorizontalMenu extends Model{
@Id
@GeneratedValue
public Long id;
public List<MenuItem> items;
public Long getId()
{
return this.id;
}
public void setId(Long id)
{
this.id = id;
}
public List<MenuItem> getItems()
{
return this.items;
}
public void setItems(List<MenuItem> items)
{
this.items = items;
}
public static Finder find = new Finder(Long.class, HorizontalMenu.class);
}
@Entity
@Embeddable
public class MenuItem {
@Id
public Long id;
public String text;
public String url;
public HorizontalMenu subMenu;
}
答案 0 :(得分:1)
由于您的MenuItem
课程为@Embeddable
。 HorizontalMenu
课程中的数据成员项目为@Embedded
。所以,这里应该如何显示:
@Embedded
public List<MenuItem> items;
由于您的MenuItem
被标记为@Embeddable
,因此您不必将其标记为@Entity
。 Object
有Entity
的某些要求,例如Id
。 Embeddable
。并且{{1}}个对象没有唯一的身份。所以,不要打扰。
要快速测试,请创建内存数据库。现在,当您启动应用程序时 - 将动态创建数据库。因此,您将能够看到表格的布局方式。执行的脚本在conf目录中可用。
进一步测试 - 在应用程序启动期间通过YAML插入一些数据(提示 - 查看GlobalSettings对象,Play文档中提供的示例)并查看它是否正确插入。