java - 通过主键访问另一个表中的列
问题描述
我是java的初学者,正在尝试用spring构建一个简单的API。我找不到任何关于如何在模型文件中实现直观的 pk-fk 关系的清晰描述。该 api 是一个餐厅应用程序,菜单表中的项目必须用于订单和购物车。
我已经在模型文件中编写了所有表定义,例如 Menu、Prices、Orders、ShoppingCart,并且我需要使用 Menu 表中不是 Orders 表中的 pk 的列(例如项目名称)。据我了解,只能使用 pk 设置关系,但是如何通过 pk 从 Orders 表访问 Menu 表中的其他列?
@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
}
解决方案
一旦你有了菜单的 ID,你就可以调用你的 DAO 从数据库中检索它。或者,您可以在 Order 中添加一个 transcient 字段,当您检索订单时会自动填写该字段:
@Transcient
private transcient Menu menu;
无论如何,您的菜单的所有列都应使用@Column 进行注释。
推荐阅读
- groovy - 如何测试从 Spock 中的外部调用实例化变量的函数
- java - 双除法得到的整数
- hive - 启用 LDAP 身份验证时无法启动 hiveserver2
- c++ - 拱Linux。AUR 包 mysql 不能用 makepkg 构建。错误:构建()中发生故障
- networking - 如何在使用 openstack 创建的 centos VM 实例中禁用互联网?
- arrays - 如何在 POSTMAN 中验证 ARRAY 响应?
- python - 匹配首字母的正则表达式
- python-unittest - 运行创建的测试套件时,Python 单元测试运行两次
- c# - 在 WPF MVVM 应用程序中添加材料设计后,数据网格不显示滚动条并且设计已过时
- bash - 如何使用 aws unload 命令将数据从 AWS Redshift 卸载到 s3?