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

Java 如何使用hibernate映射多对多关系,java,hibernate,Java,Hibernate,我有一个要求,用户将能够根据位置搜索餐厅,并检查餐厅的菜单。菜单包含各种项目,如汤、开胃菜、主菜等。管理员用户应该能够了解新餐厅、菜单和项目及其价格 现在在java中,我有了这种关系,我添加所需的代码只是为了清楚: java餐厅 Menu.java 现在我很困惑,我应该把价格细节放在哪里。既然菜单和汤有多对多的关系,我应该单独安排一张桌子。但是在hibernate中我怎么能做到这一点呢。看看这个-它解释了如何在多对多关系中拥有属性,这是您基本上需要的。价格是菜单的属性还是汤的属性?或者两者都有?

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

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

java餐厅

Menu.java


现在我很困惑,我应该把价格细节放在哪里。既然菜单和汤有多对多的关系,我应该单独安排一张桌子。但是在hibernate中我怎么能做到这一点呢。

看看这个-它解释了如何在多对多关系中拥有属性,这是您基本上需要的。

价格是菜单的属性还是汤的属性?或者两者都有?可能是@user3181365的副本我不相信,这是Dhruv Rai Puri在其链接唯一答案中提供的链接。这个问题应该以重复的形式结束,因此我标记了它。
@Entity
public class Restaurant {

    @Id
    private Long id;
    private String name;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "restaurant_menu")
    private Menu menu;
}
@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>();
}
@Entity
public class Soup {

    @Id
    private Long id;
    private String name;
}