通过主键从另一个表访问列

时间:2019-05-30 12:00:02

标签: java hibernate spring-data-jpa

我是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
}

1 个答案:

答案 0 :(得分:0)

一旦有了菜单的ID,就可以调用DAO从数据库中检索它。另外,您可以在订单中添加一个超自然字段,当您检索订单时会自动填写该字段:

@Transcient
 private transcient Menu menu;

无论如何,菜单的所有列都应使用@Column注释。