当前位置: 首页 > 知识库问答 >
问题:

什么是@joincolumn以及如何在Hibernate中使用它

淳于思淼
2023-03-14

我读了很多关于@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 Class ---- Entity
@JoinColumn(name="patient_id") ---- annotation
private Patient patient ----field

我一直在读这篇文章,但我仍然感到困惑。JPA JoinColumn与mappedBy

共有1个答案

姚棋
2023-03-14

通过联接表的单向关联

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}

通过联接表的双向关联

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

通过外键的单向关联

@Entity
class Patient {

    @OneToMany
    @JoinColumn
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}
@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

通过具有外部列名规范的外键进行的双向关联

@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id")
    private Patient patient;

}

这是使用@joincolumn的基本出发点。

要验证外键(vehicle表中的patient_id)是否真的映射到patients表中,可以使用@joincolumn(nullable=false)

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id", nullable = false)
    private Patient patient

}
 类似资料:
  • 问题内容: 我已经阅读了很多有关@JoinColumn的内容,但是我仍然不明白它的含义。 患者表 车辆表 患者分类 车辆类别 Vehicle Class ---- Entity @JoinColumn(name=”patient_id”) ---- annotation private Patient patient ----field ``` 会说吗?该车辆实体有一个外键到患者实体命名patie

  • 问题内容: 我想创建一个Android应用程序,以作者身份上传我的大学笔记,任何人都可以下载它。我读到firebase可以帮助我解决这个问题。任何人都可以参考一下来解释什么是firebase,以及如何使用它。谢谢! 问题答案: Firebase团队成员在这里。 tl; dr- 阅读此快速入门,观看此视频。使用FirebaseUI。 Firebase是用于移动和Web应用程序的平台。 Firebas

  • 问题内容: 我是Flask的新手。我不明白怎么用。我在某处读到它用于返回查询字符串的值[如果我错了,请纠正我]。以及需要多少个参数。我知道当我必须存储提交的表单数据时,我可以使用 在此,仅传递一个参数。 考虑下面的代码。分页也已在此代码中完成。 在这里,request.args.get()采用两个参数。请解释为什么要使用两个参数以及它的用途。 问题答案: 根据flask.Request.args文

  • 问题内容: 我参与开发一个Java项目,该项目使用一些C ++组件,因此我需要Jacob.dll。(在Windows 7上) 无论我把Jacob.dll放在哪里,我都在不断获取。 我在寻找可能的决定,而到目前为止尚未尝试的决定是设置LD_LIBRARY_PATH变量,指向.dll文件。 我经验不足,不熟悉该变量的含义和用法-您能帮我吗? 问题答案: 通常,您必须在JVM的命令行上进行设置:

  • 本文向大家介绍什么是#if DEBUG,以及如何在C#中使用它?,包括了什么是#if DEBUG,以及如何在C#中使用它?的使用技巧和注意事项,需要的朋友参考一下 在Visual Studio调试模式和发布模式下,用于构建.Net项目的配置不同。 选择用于逐步调试其.Net项目的“调试”模式,然后为“最终”汇编文件(.dll或.exe)选择“发布”模式。 调试模式不会优化其生成的二进制文件,因为源

  • 使用它来分析C或C++中的代码? 使用它来分析x86汇编程序中的代码?