【发布时间】:2015-10-27 13:58:15
【问题描述】:
我有一个要求,用户可以根据位置搜索餐厅并检查餐厅的菜单。菜单包含各种项目,如汤、开胃菜、主菜等。管理员用户应该能够查看新餐厅、菜单和项目及其价格。
现在在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;
}
现在我很困惑,我应该把价格细节保存在哪里。由于菜单和汤有多对多的关系,我应该维护一个单独的表。但是我怎么能在休眠中做到这一点。
【问题讨论】:
-
价格是菜单的属性还是汤的属性?还是两者兼而有之?
-
@user3181365 我不相信,这是 Dhruv Rai Puri 在他的仅链接答案中提供的链接。这个问题应该作为重复问题关闭,因此我标记了它。