微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ManyToMany 中重命名外键约束

如何解决在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?