我已经阅读了很多关于@JoinColumn 的文章,但我仍然不明白它背后的想法。
病人表
CREATE TABLE patient (
patient_id BIGINT NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
PRIMARY KEY(patient_id));
车辆表
CREATE TABLE vehicles (
patient_id BIGINT NOT NULL,
vehicle_id BIGINT NOT NULL,
vehicle_manufacturer VARCHAR(255),
PRIMARY KEY (vehicle_id),
CONSTRAINT patienthasmanyvehicle FOREIGN KEY(patient_id) REFERENCES patient(patient_id));
病人等级
@OneToMany(mappedBy = "patient")
private Collection<Vehicle> patientVehicles = new ArrayList<Vehicle>();
车辆类别
@ManyToOne
@JoinColumn(name="patient_id")
private Patient patient;
我对 Vehicle 类的部分感到困惑,它们之间的关系是什么
Vehicle Class ---- Entity
@JoinColumn(name="patient_id") ---- annotation
private Patient patient ----field
它说; Vehicle 实体 有一个指向名为 patient_id 的 Patient 实体 的 外键。将 patient_id 添加为 Vehicle Entity 表 中的一列
JoinColumn 的名称参数应该始终是 外键还是主键?
我一直在读这个,但我仍然很困惑。 JPA JoinColumn 与 mappedBy
原文由 zbryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
通过连接表的单向关联
通过连接表的双向关联
通过外键的单向关联
通过外键的双向关联
我们不需要在
Vehicle
端使用@JoinColumn
,Hibernate 默认采用它。有时我只是用它来强调它(另一种情况,当我们想指定一个连接列名时)。通过外键与外列名称规范的双向关联
这是使用
@JoinColumn
的基本起点。要验证外键(
patient_id
在Vehicle
表中)是否真的映射到患者表中,你可以使用@JoinColumn(nullable = false)