首页 > 解决方案 > 使用 JPA 在数据库中创建表外键约束

问题描述

在 JPA 项目中,当我为实体生成表时,我看不到在数据库端创建的任何表外键约束。

我得出的结论是,JPA 无法在数据库中创建表外键约束,并且引用完整性在 JPA(在应用程序端)而不是数据库中强制执行。

有人可以确认是否是这样吗?

标签: jpaeclipselink

解决方案


根据JPA 2.2 规范,持久性管理器应该创建外键约束。例如在一对一映射的情况下:

假如说:

  • 实体 A 引用实体 B 的单个实例。

  • 实体 B 引用实体 A 的单个实例。

  • 实体 A 被指定为关系的所有者。

以下映射默认值适用:

  • 实体 A 映射到名为 A 的表。

  • 实体 B 映射到名为 B 的表。

  • 表 A 包含表 B 的外。外键列名称由以下内容串联形成:实体 A 的关系属性或字段的名称;表B中主键列的名称。外键列与表B的主键类型相同,并且有唯一键约束。


推荐阅读