You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JPA多对多关系自动生成中间表的schema与表名

JPA多对多中间表自定义schema与表名方法

你只需要在多对多关联的字段上添加@JoinTable注解,手动指定中间表的相关属性即可,修改后的代码示例如下:

@Entity
@Table(schema = "my_schema")
public class AnotherEntity {}

@Entity
@Table(schema = "my_schema")
public class MyEntity {
    @ManyToMany
    @JoinTable(
        // 自定义中间表表名
        name = "my_entity_another_entity_rel",
        // 指定中间表所属schema
        schema = "my_schema",
        // 可选配置:自定义当前实体在中间表的外键字段名
        joinColumns = @JoinColumn(name = "my_entity_id"),
        // 可选配置:自定义关联实体在中间表的外键字段名
        inverseJoinColumns = @JoinColumn(name = "another_entity_id")
    )
    private List<AnotherEntity> entityRelationship;
}

相关参数说明:

  • name:自定义中间表的表名,不配置的话默认会按照「主表名_关联表名」的规则生成默认表名
  • schema:指定中间表所属的schema,配置后就不会默认创建到public schema下
  • joinColumns、inverseJoinColumns为可选配置,如果不需要修改外键字段的默认命名可以省略

如果你所有表都需要统一用同一个schema,也可以配置全局默认schema,不用每个多对多关联都单独指定:

  • Spring Boot + Hibernate场景下,可在application配置文件中添加如下配置:
    spring.jpa.properties.hibernate.default_schema = my_schema
    配置后所有未单独指定schema的表(包括自动生成的中间表)都会默认创建到该schema下。

内容的提问来源于stack exchange,提问作者Maicon Mauricio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:15:08