嵌入式类/ DB结构

时间:2012-10-11 18:20:31

标签: java playframework playframework-2.0 ebean

我正在尝试将多层菜单存储在数据库中。我有一个课程HorizontalMenu,其中包含List<MenuItem>项。我的MenuItem类包含文本的String,网址为String,子菜单包含HorizontalMenu,如果有的话。

因此,我的主菜单可以包含任意数量的MenuItem个,每个都可以有0个或HorizontalMenu个。

所以我想知道如何在代码中设置它,以便在数据库中正确设置。

我正在使用Ebeans和Play Framework 2.0,所以这些术语的答案会很棒,但如果有人能用数据库术语指出我的方向也很好。



这是我到目前为止所得到的:

Horizo​​ntalMenu.java:

@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);
}

MenuItem.java:

@Entity
@Embeddable
public class MenuItem {
    @Id
    public Long id;
    public String text;
    public String url;
    public HorizontalMenu subMenu;
}

1 个答案:

答案 0 :(得分:1)

由于您的MenuItem课程为@EmbeddableHorizontalMenu课程中的数据成员项目为@Embedded。所以,这里应该如何显示:

@Embedded
public List<MenuItem> items;

由于您的MenuItem被标记为@Embeddable,因此您不必将其标记为@EntityObjectEntity的某些要求,例如IdEmbeddable。并且{{1}}个对象没有唯一的身份。所以,不要打扰。

要快速测试,请创建内存数据库。现在,当您启动应用程序时 - 将动态创建数据库。因此,您将能够看到表格的布局方式。执行的脚本在conf目录中可用。

进一步测试 - 在应用程序启动期间通过YAML插入一些数据(提示 - 查看GlobalSettings对象,Play文档中提供的示例)并查看它是否正确插入。