映射JPA复合外键

冯·卡瓦里尔

我是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实体关系的一个很好的例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JPA 复合主键/外键映射

来自分类Dev

使用JPA映射复合主键和外键

来自分类Dev

在 JPA 中使用复合外键映射实体

来自分类Dev

将复合外键映射到复合主键

来自分类Dev

带有外键和枚举的JPA复合键

来自分类Dev

JPA / Hibernate复合主前键ManyToOne映射

来自分类Dev

复合外键

来自分类Dev

复合外键插入

来自分类Dev

外键还是复合键?

来自分类Dev

JPA,Hibernate:仅具有外键的OneToOne映射

来自分类Dev

外键和复合PK

来自分类Dev

在单个表中的复合外键和主键上休眠一对一映射

来自分类Dev

将实体映射到具有部分硬编码的复合外键的查找表

来自分类Dev

JPA注释复合主键,它也是一对多外键

来自分类Dev

从外键和DateTime创建复合键

来自分类Dev

外键映射

来自分类Dev

如何使用复合键映射多对多

来自分类Dev

MySql中的外键作为复合主键

来自分类Dev

使用复合主键作为外键

来自分类Dev

SQLAlchemy ORM无法使用复合外键

来自分类Dev

具有继承的EntityFramework复合外键

来自分类Dev

两个外键的复合主键

来自分类Dev

复合外键作为主键

来自分类Dev

Postgres-插入和复合外键

来自分类Dev

包含外键的Hibernate Mapping复合主键

来自分类Dev

mysql外键到复合主键

来自分类Dev

在 MySQL 中组合复合外键?

来自分类Dev

JPA 2 Hibernate映射,使用具有3层结构的@IdClass在主键中使用复合键

来自分类Dev

EF无法映射外键