我是Java的初学者,正在尝试用spring构建一个简单的API。我找不到关于如何在模型文件中实现直观的pk-fk关系的任何清晰描述。该api是一个餐厅应用程序,菜单表中的项目必须在订单和购物车中使用。
我已在模型文件(如菜单,价格,订单,ShoppingCart)中编写了所有表定义,并且我需要使用菜单表中订单表中不是pk(例如商品名称)的列。据我了解,只能通过pk设置关系,但是如何从订单表通过pk访问菜单表中的其他列?
@Entity
public class Menu {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private int id;
private String name;
private float size;
private String ingredients;
private String dishCat;
private String drinkCat;
private Boolean drink;
private String remarks;
private String offer;
protected Menu() {
}
public Menu(String name, float size, String ingredients, String dishCat, String drinkCat, Boolean drink, String offer, String remarks) {
this.name = name;
this.size = size;
this.ingredients = ingredients;
this.dishCat = dishCat;
this.drinkCat = drinkCat;
this.drink = drink;
this.offer = offer;
this.remarks = remarks;
}
@Override
public String toString() {
if (drink == false) {
return String.format("%d. %s: %s - %s. Size: %f g. Ingredients: %s. Category: %s.", id, dishCat, name, offer, size, ingredients, remarks);
}
else {
return String.format("%d. %s: %s - %s. Size: %f ml.", id, drinkCat, name, offer, size);
}
}
// Getters and setters, accessor methods
}
答案 0 :(得分:0)
一旦有了菜单的ID,就可以调用DAO从数据库中检索它。另外,您可以在订单中添加一个超自然字段,当您检索订单时会自动填写该字段:
@Transcient
private transcient Menu menu;
无论如何,菜单的所有列都应使用@Column注释。