gpt4 book ai didi

java - 映射 JPA 复合外键

转载 作者:行者123 更新时间:2023-11-30 02:46:50 24 4
gpt4 key购买 nike

我是 JPA 新手,想要创建具有以下关系的数据库:

|Participant|
|id : INT (PK) | id_event : INT (PK, FK) |

|Event|
|id : INT (PK) |

我完全迷失了,几乎不明白我找到的示例的语法:/

但我知道我需要创建另一个类来包含 PK 的两个部分,这导致了另一个问题:这个类可以是内部类(出于优化目的)吗?

我希望我没有要求太多,但我真的很想得到它。

最佳答案

您的实体可能是这样的:

@Entity
public class Participant {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@OneToMany(fetch = FetchType.LAZY) // or any other relation
private List<Event> events;

// fields, constructors, getters, setters
}

@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

// fields, constructors, getters, setters
}

在本例中,JPA 将使用以下查询创建 3 个表(SQL 方言因数据库而异,在本例中我使用 H2 数据库):

CREATE TABLE Event (
id bigint GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY (id)
);

CREATE TABLE Participant (
id bigint GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY (id)
);

CREATE TABLE Participant_Event (
Participant_id bigint NOT NULL,
events_id bigint NOT NULL
)

Participant_Event 是自动创建的连接表来链接参与者和事件。

这是一个很好的理解示例JPA entity relations .

关于java - 映射 JPA 复合外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39999843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com