如何使用hibernate映射多对多的关系

时间:2015-10-27 13:58:15

标签: java hibernate

我有一个要求,即用户可以根据位置搜索餐厅并检查餐厅的菜单。菜单包含各种项目,如汤,开胃菜,主菜等。管理员用户应该能够新的餐厅,菜单和项目及其价格。

现在在java中,我有这种关系,为了清楚起见,我只是添加了所需的代码:

Restaurant.java

@Entity
public class Restaurant {

    @Id
    private Long id;
    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "restaurant_menu")
    private Menu menu;
}

Menu.java

@Entity
public class Menu {

    @Id
    private Long id;
    private String name;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "menu_soups", joinColumns = { @JoinColumn(name = "menu_id") }, inverseJoinColumns = { @JoinColumn(name = "soup_id") })
    private Set<Soup> soups = new HashSet<Soup>();
}

Soup.java

@Entity
public class Soup {

    @Id
    private Long id;
    private String name;
}

现在我很困惑,我应该在哪里保留价格细节。由于菜单和汤有多对多关系,我应该保持一个单独的表。但是我怎么能在休眠中做到这一点。

1 个答案:

答案 0 :(得分:0)

看看这个 - answer ,它解释了如何在多对多关系中拥有属性,这正是你所需要的。