0

我正在尝试将我的多层菜单存储在数据库中。我有一个HorizontalMenu包含List<MenuItem>其项目的类。我的MenuItem类包含一个String用于文本、一个String用于 URL 和另一个HorizontalMenu用于子菜单(如果有的话)。

所以我的主菜单可以有任意数量的MenuItems,每个可以有零或一个HorizontalMenus。

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

我正在使用 Ebeans 和 Play Framework 2.0,所以在这些方面的答案会很好,但如果有人可以用 DB 术语指出我正确的方向,那也很好。



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

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

菜单项.java:

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

1 回答 1

1

因为你的MenuItem课是@Embeddable. 类中的数据成员项HorizontalMenu将是@Embedded. 所以,它应该是这样的:

@Embedded
public List<MenuItem> items;

由于您MenuItem的标记为@Embeddable,因此您不必将其标记为@EntityObjecta要成为Entityeg有一定的要求Id。并且Embeddable对象没有唯一的身份。所以,不要打扰。

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

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

于 2012-10-12T12:50:35.853 回答