如何解决在 ManyToMany 中重命名外键约束
spring-boot-starter-parent 2.4.1
spring-boot-starter-data-jpa
header=None
结果:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "clients__semantics_permissions",joinColumns = {
@JoinColumn(name = "client_id",foreignKey = @ForeignKey(name = "client_fk"))
}
)
private Set<LevelTwoBase> semantics_level_two_base = new HashSet<LevelTwoBase>();
# \d clients__semantics_permissions
Table "public.clients__semantics_permissions"
Column | Type | Collation | Nullable | Default
-----------------------------+---------+-----------+----------+---------
client_id | integer | | not null |
semantics_level_two_base_id | integer | | not null |
我不知道如何重命名 Indexes:
"clients__semantics_permissions_pkey" PRIMARY KEY,btree (client_id,semantics_level_two_base_id)
Foreign-key constraints:
"fk5nepw5pnbbeewptg0a3tft563" FOREIGN KEY (semantics_level_two_base_id) REFERENCES semantics__level_two_base(id)
"semantics_fk" FOREIGN KEY (client_id) REFERENCES clients__branch(id)
的外键。换句话说,我就是不喜欢那个semantics_level_two_base_id
。
解决方法
指定 inverseForeignKey
:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "clients__semantics_permissions",joinColumns = { @JoinColumn(name = "client_id",foreignKey = @ForeignKey(name = "client_fk")) },inverseForeignKey = @ForeignKey(name = "<the name you like>"))
private Set<LevelTwoBase> semantics_level_two_base = new HashSet<LevelTwoBase>();
用于创建架构的休眠输出:(使用 level_two_base_fk 作为名称)
Hibernate: create table clients__semantics_permissions (client_id int8 not null,semantics_level_two_base_id int8 not null,primary key (client_id,semantics_level_two_base_id))
Hibernate: create table foo (id int8 not null,primary key (id))
Hibernate: create table level_two_base (id int8 not null,primary key (id))
Hibernate: alter table clients__semantics_permissions add constraint level_two_base_fk foreign key (semantics_level_two_base_id) references level_two_base
Hibernate: alter table clients__semantics_permissions add constraint client_fk foreign key (client_id) references foo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。