如何修改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
相关产品推荐
相关产品推荐

